阅读Excel工作表时如何不跳过空行?

李·洛夫蒂斯(Lee Loftiss)

我正在使用Microsoft.Office.Interop.Excel读取Excel文件。

我遇到的问题是,在读取时,它将具有信息的第一行计为第1行。因此,如果要获取信息的第一行为第3行,则将其计为第一行。这是一个问题,因为Excel工作表有时前两行都有数据,有时却没有。但是我需要读取的数据总是从第三行开始。

这是我用来阅读工作表的例程:

Microsoft.Office.Interop.Excel.Application exl = new Microsoft.Office.Interop.Excel.Application();
        Workbooks wkbs = exl.Workbooks;
        Microsoft.Office.Interop.Excel.Workbook wkb = null;
        Sheets shts;
        Microsoft.Office.Interop.Excel.Worksheet wks = null;

        // load work book
        //wkb = wkbs.Open(races_data_path, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);//oMissing
        wkb = wkbs.Open(races_data_path, Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);//oMissing

        shts = wkb.Sheets;
        wks = (Microsoft.Office.Interop.Excel.Worksheet)shts.get_Item(Properties.Settings.Default.excel_worksheet);

        // read lines from worksheet
        Microsoft.Office.Interop.Excel.Range range = wks.UsedRange;

        for (int rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
        {
            try
            {
                object[,] values = (object[,])range.Value2;

                if (Convert.ToString(values[rCnt, 4]) != "")
                {
                    //Console.WriteLine(String.Format("Ldd: {0} {1} {2}", Convert.ToInt16(values[rCnt, 2]), Convert.ToInt16(values[rCnt, 3]), Convert.ToString(values[rCnt, 4])));
                    if (races[Convert.ToInt16(values[rCnt, 1])] == null) races[Convert.ToInt16(values[rCnt, 1])] = new RaceObject();

                    races[Convert.ToInt16(values[rCnt, 1])].add_racer(Convert.ToInt16(values[rCnt, 2]), Convert.ToInt16(values[rCnt, 3]), Convert.ToString(values[rCnt, 4]), Convert.ToString(values[rCnt, 7]));
                }

            }
            catch (Exception ex)
            {
                data_loaded = false;
                rCnt = range.Rows.Count;
            }

        }

在此示例中,您可以看到循环计数从“ 1”开始。这是为了读取工作表的前两行为空的工作表。如果前两行有数据,则仅当我将计数起始位置更改为“ 3”时,此循环才有效。

例如:如果工作表看起来像这样,则起始值= 1:

no data
no data
has data
has data
has data

如果工作表如下所示,则起始值= 3:

has unnecessary data
has unnecessary data
has data
has data
has data
D_Bester

选项1:在进行其余操作之前,立即在第一个单元格中添加一些内容:wks.cells(1,1).value =“'”&wks.cells(1,1).value这将把usedRange扩展到第一个单元格。

然后,数据将始终从第三行开始,您可以轻松地始终跳过前两行。

选项2:您还可以wks.UsedRange.Cells(1, 1).Row用来查看第一行是1还是3。然后您可以调整是否使用这些行。

(根据评论编辑帖子)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建 .csv 文件时如何不跳过 Excel 中的空单元格

使用 openrowset 时如何避免在 Excel 工作表末尾插入空行

阅读时如何忽略CSV中的空行

异步阅读Excel工作表

在R中读取多个Excel工作表时跳过行

ReactJS-如何在使用XLSX读取时跳过Excel中的空行

不跳过批处理文件中的空行

如何使用c#在excel工作表数据表中添加空行

当使用openpyxl在excel工作表中打印python数据框时,如何跳过默认数据框索引

如何使awk不跳过空列?

如何删除Excel工作表中的前两个空行?

Excel 2013 64位VBA如何打开专注于最后一个空行的工作表

嗨,我如何从 Excel 工作表中导出 txt 文件,而最后没有空行?

如何从 Excel 工作表中导出 txt 文件而不在末尾有空行?

读取 Excel 文件并跳过空行

如何获得跳过的空格(不跳过的原始令牌)?

Excel VBA 复制到另一个工作表时跳过空白

Ruby CSV | 阅读CSV时如何跳过几列?

在 Python 中测试依赖于时间的代码时,如何在不跳过秒的情况下“加快时间”?

如何指示屏幕阅读器跳过SVG图表(轴标签),而是阅读关联的表?

Python:使用Openpyxl阅读大型Excel工作表

AWS Athena 创建外部表跳过空行

如何查询MongoDB内部循环而不跳过结果?

Heroku时钟流程:如何确保不跳过作业?

如何确保在tkinter中不跳过“绑定”顺序?

使用 CsvHelper 时获取跳过的空行数?

当我在异步方法中使用 await 时,为什么它不跳过它以便它可以在后台工作并转到以下几行?

每次合并新工作表时如何向Excel工作表添加计数器?

在多个表中使用 union all 时如何删除空行