2017-06-07 6 views
0

私はCSVファイルを持っていますので、Excelで開いてxlsxとして再度保存します。データをExcelファイルに直接書き込むのではなく、このようにしたいのですが、データの書き込みが非常に遅いため、より早くそのようにすることを願っています。InteropでExcelでCSVを開くと、最初の行のみが読み取られます

私のcsvファイルは次のようになります。私が開くと

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(); 

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

そしてここでは、私のコードは、Excelでそれを開き、再度保存、CSVにデータを書き込むことですcsvをExcelで手動で正しく開くことができます。しかし、私が上のコードでそれを行うと、最初の行だけが含まれています。私は間違って何をしていますか?

答えて

1

残念ながら、コードサンプルは完全ではありません。しかし、あなたの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(); 
+0

あなたは正しいです。私はちょうど必要なコードを残していないと思った。しかし、それが判明したので、私はワークブックのために設定したオプションでした。ありがとう! – NPadrutt

関連する問題