我正在尝试使用Office.Interoperability.Excel命名空间从Excel工作表中读取数据。我想获取工作表的第一行,因为第一行包含标题,而不指定开始和结束单元格。因为我不知道是否在工作表中添加了新列。
Microsoft.Office.Interop.Excel.Application excelObj = new Application();
Microsoft.Office.Interop.Excel.Workbook myBook = excelObj.Workbooks.Open(@"D:\myFile.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 0, 0);
Microsoft.Office.Interop.Excel.Worksheet mySheet = (Worksheet)myBook.Sheets.get_Item(1);
Range range = mySheet.Cells.EntireRow;
这里,范围变为整个范围,并且不限于标题列的数量。此外,我还有大约10,000行要处理的大量数据。
答案 0 :(得分:2)
如果你的要求不涉及写回excel文件我建议你使用Excel数据阅读器(http://exceldatareader.codeplex.com/)它更容易使用,不需要excel在服务器及其更快
答案 1 :(得分:1)
我认为你正在寻找这个:
Range headers = mySheet.UsedRange.Rows(1);
答案 2 :(得分:1)
我刚刚回答了另一个Excel阅读问题:C# converting .xls to .csv without Excel
FileHelpers库非常适合您的任务。我自己使用它来处理那些行数以上。
一旦从Excel中读取行,我不知道你对这些行做了什么,但是如果你看一下可以分解为步骤的一些处理,那么请看Rhino.Etl。这是处理大量数据的一种非常强大的方法。