在Excel中通过Interop打开CSV只读取第一行

我有一个CSV文件,我想在Excel中打开它并再次保存为xlsx。 我想这样做,而不是直接将数据写入Excel文件的原因是我希望它的速度更快,因为写入数据非常缓慢。

我的csv看起来像这样:

sep=, header1, header2, header3 data1, data2, data3 

这里是我的代码将数据写入CSV,在Excel中打开并再次保存:

 var csvPath = [MyCSVPath]; File.WriteAllBytes(csvPath, WriteCsv(result)); excel.Workbooks.Open(csvPath, Delimiter: ","); // Save the excel localy and load it's bytes again. var path = [MyExcelPath] workbook.SaveCopyAs(path); excel.Workbooks.Close(); 

当我手动打开excel中的csv时,它会正确打开。 但是,当我通过上面的代码执行它只包含第一行。 我究竟做错了什么?

不幸的是,你的代码示例不完整。 但是下面的代码在你的csv文件例子的Excel 2016中工作正常。 默认情况下, SaveCopyAs不会更改初始格式,但SaveCopy允许明确定义格式。

 var excelApp = new Application(); excelApp.Workbooks.Open("d:\\1.csv", Delimiter: ","); var workbook = excelApp.ActiveWorkbook; // this saves in same CSV format workbook.SaveCopyAs("d:\\2.xlsx"); // this saves to correct xlsx format workbook.SaveAs("d:\\3.xlsx", XlFileFormat.xlOpenXMLWorkbook); workbook.Close(); excelApp.Quit();