2015-04-07 15 views
2

我有一個已經使用逗號分隔值(csv)格式的.txt文件。 我想將作爲工作表的.txt文件中的數據添加到打開的Excel工作簿中。將csv格式的.txt文件添加到C#中的現有工作簿中

我這是怎麼打開工作簿:

var xlApp = new Excel.Application { Visible = false }; 
Excel.Workbook newWorkbook = xlApp.Workbooks.Add(Type.Missing); 

而且這是我嘗試將.txt文件添加到工作簿:

string txt2xls = Globals.HomeDir + "\\JSL\\Data1" + ".txt"; 
string csv2xls = Globals.HomeDir + "\\JSL\\Data1" + ".csv"; 

if (File.Exists(csv2xls)) 
File.Delete(csv2xls); 

File.Move(txt2xls, Path.ChangeExtension(txt2xls, ".csv")); 
newWorkbook.Sheets.Add(csv2xls, Type.Missing, Type.Missing, Type.Missing); 

最後一行給了我一個錯誤( HRESULT:0x800A03EC)。 我能做些什麼來解決這個問題? 謝謝!

回答

1

Excel中的CSV文件可以有總是隻有一個工作表。您不能將另一個工作表添加爲CSV。您將不得不單獨打開CSV作爲另一個工作簿,並將該工作簿中的工作表複製到您的多工作表xlsx工作簿newWorkbook

使用Worksheet.Copy方法,如How to: Programmatically Copy Worksheetshere中所述。

var xlApp = new Excel.Application { Visible = false }; 
Excel.Workbook newWorkbook = xlApp.Workbooks.Add(Type.Missing); 
Excel.Workbook csvWorkbook = xlApp.Workbooks.Open(csv2xls); 
Excel.Worksheet worksheetCSV = ((Excel.Worksheet)csvWorkbook.Worksheets[1]); 
Excel.Worksheet targetWorksheet = ((Excel.Worksheet)newWorkbook.Worksheets[1]); 
worksheetCSV.Copy(targetWorksheet); 

也標誌着該

如果不指定之前或之後,Microsoft Office Excel中 創建包含複製表新工作簿。

所以,你可以做

worksheetCSV.Copy(Type.Missing, Type.Missing); 

,無需explitly添加newWorkbook

+0

謝謝! 您是否知道如何使用C#描述複製工作簿? – shkedid

+0

@shkedid更新回答... –

+0

非常感謝!它終於成功了! – shkedid

相關問題