在csv格式中添加.txt文件作为工作表在C#中的现有工作簿

我有一个已经在逗号分隔值(csv)格式的.txt文件。 我想将作为工作表的.txt文件中的数据添加到打开的Excel工作簿中。

这是我如何打开工作簿:

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)。 我能做些什么来解决这个问题? 谢谢!

Excel中的CSV文件只能有一个工作表 。 您不能将另一个工作表添加为CSV。 您将不得不单独打开CSV作为另一个工作簿,并将该工作簿中的工作表复制到多工作表xlsx工作簿newWorkbook

使用Worksheet.Copy方法如在如何:以编程方式复制工作表和这里所述 。

 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将创build一个新的工作簿,其中包含复制的工作表。

所以你可以做

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

而且不需要明确添加newWorkbook