我的.txt文件已经是逗号分隔值(csv)格式。 我想将.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)。 我该怎么做才能解决这个问题? 谢谢!
答案 0 :(得分:1)
Excel中的CSV文件可以总共只有一个工作表。您无法将另一个工作表添加为CSV。您必须单独打开CSV作为另一个工作簿,并将工作表从该工作簿复制到多工作表xlsx工作簿newWorkbook
。
使用How to: Programmatically Copy Worksheets和here中所述的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之前或之后 创建一个包含复制的工作表的新工作簿。
所以你可以做到
worksheetCSV.Copy(Type.Missing, Type.Missing);
并且无需explitly添加newWorkbook
。