我有一个已采用逗号分隔值 (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
方法,如 How to: Programmatically Copy Worksheets 中所述和 here .
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);
同时标出
If you do not specify either Before or After, Microsoft Office Excel creates a new workbook that contains the copied sheet.
所以你可以这样做
worksheetCSV.Copy(Type.Missing, Type.Missing);
并且无需显式添加 newWorkbook
。
关于c# - 将 csv 格式的 .txt 文件作为工作表添加到 C# 中的现有工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29491969/