Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OpenXMLSDK从Excel读取数据的有效方法_Excel_Import_Openxml Sdk - Fatal编程技术网

使用OpenXMLSDK从Excel读取数据的有效方法

使用OpenXMLSDK从Excel读取数据的有效方法,excel,import,openxml-sdk,Excel,Import,Openxml Sdk,我试图从一个excel文件中导入数据,该文件有8个工作表,其中一个工作表包含56000行。该表有44列数据。为了使用OpenXML访问前两行的数据,我使用以下代码 using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(importFileCopyPath, false)) { string relationshipId = spreadSheetDocument.WorkbookPart.Workb

我试图从一个excel文件中导入数据,该文件有8个工作表,其中一个工作表包含56000行。该表有44列数据。为了使用OpenXML访问前两行的数据,我使用以下代码

using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(importFileCopyPath, false))

{

string relationshipId = spreadSheetDocument.WorkbookPart.Workbook.Descendants<Sheet>().Where(p => p.Name.Value == "Sheet1").Select(q => q.Id.Value).FirstOrDefault(); 

var worksheetPart = (WorksheetPart)spreadSheetDocument.WorkbookPart.GetPartById(relationshipId);

Worksheet workSheet = worksheetPart.Worksheet;

var sheetData = workSheet.GetFirstChild<SheetData>();

var rows = sheetData.Descendants<Row>();
}
使用(SpreadsheetDocument SpreadsheetDocument=SpreadsheetDocument.Open(importFileCopyPath,false))
{
string relationshipId=spreadSheetDocument.WorkbookPart.Workbook.Substanders()。其中(p=>p.Name.Value==“Sheet1”)。选择(q=>q.Id.Value)。FirstOrDefault();
var worksheetPart=(worksheetPart)spreadSheetDocument.WorkbookPart.GetPartById(relationshipId);
工作表=工作表零件工作表;
var sheetData=workSheet.GetFirstChild();
var rows=sheetData.substands();
}
然后我遍历第5行中的行集合。不幸的是,对于一个56000行的文件,从前两行提取数据需要2分钟。这是因为第3行将包含56000行的整个工作表加载到内存中。
是否有更好的方法绕过加载整个工作表数据,直接访问前两行的内容?

使用SAX Hi-Paul,谢谢链接。我尝试了SAX方法来加快速度,但我没有从单元格中获得所需的数据。我得到的是一些excel表格中没有的十进制数字。在您提供的示例链接中为SAX提供的代码中是否需要进一步定制。同样,使用SAX中建议的方法,如何识别行的末尾和新行已经开始?