在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
。