我有一个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时,它会正确打开。但是,当我在上面的代码上执行它时,它只包含第一行。我做错了什么?
答案 0 :(得分:1)
很遗憾,您的代码示例并不完整。但以下代码在Excel 2016中适用于您的csv文件示例。默认情况下,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();