将Excel中的特定工作表转换为CSV

4

如何使用C#互操作将Excel中的特定工作表转换为CSV?它是否默认为第一个工作表,还是我可以指定?

这是我正在使用的代码:

 private void ConvertProgsToCSV()
    {
        Excel.Application app = new Excel.Application();
        Excel.Workbook wb = app.Workbooks.Open(txtFname.Text);
        wb.SaveAs(@"C:\Temp\output.csv", Excel.XlFileFormat.xlCSVWindows);
        wb.Close(false);
        app.Quit();
        Console.WriteLine("Done!");
    }

您可以选择选项卡,然后保存/转换为CSV。它不必是第一个选项卡,但必须明确选择。您尝试过什么/目前有哪些代码? - G42
你如何选择选项卡?我在_Workbook.SaveAs类中没有看到任何方法可以实现这一点。 - Liz Ravenwood
你需要使用 Worksheet 对象 中的 Select 方法(在你的代码中为 wb.Worksheet)。然后按照正常流程保存即可! - G42
1个回答

4

您需要通过工作表名称打开它,并使用Select()函数选择它:

xlSheet = (Excel.Worksheet)xlBook.Worksheets["Sheet1"];
xlSheet.Select(Type.Missing);
xlBook.SaveAs("C:\Filename.csv", Excel.XlFileFormat.xlCSV,Excel.XlSaveAsAccessMode.xlNoChange);

假设 xlSheet 的类型为 Interop.Excel.WorkSheetxlBook 的类型为 Interop.Excel.Workbook
您可以参考以下链接获取更多信息:

第一行代码出现了错误:"非可调用成员'Microsoft.Office.Interop.Excel._Workbook.Worksheets'不能像方法一样使用。" - Liz Ravenwood
我有这个。使用Excel = Microsoft.Office.Interop.Excel; - Liz Ravenwood
你必须使用[]代替(), 我已经修正了答案。 - Hadi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接