C# Worksheet.SaveAs方法保存所有工作表
使用C#编写一个方法,从工作簿中取出一个工作表并将其保存为HTML 我正在使用中所述的sheet.SaveAs方法 但是,当我查看输出时,它已经消失并保存了工作簿中的所有工作表,而不仅仅是我选择的工作表。这就好像Worksheet.SaveAs和Workbook.SaveAs只是做同样的事情 简化代码:C# Worksheet.SaveAs方法保存所有工作表,c#,excel,C#,Excel,使用C#编写一个方法,从工作簿中取出一个工作表并将其保存为HTML 我正在使用中所述的sheet.SaveAs方法 但是,当我查看输出时,它已经消失并保存了工作簿中的所有工作表,而不仅仅是我选择的工作表。这就好像Worksheet.SaveAs和Workbook.SaveAs只是做同样的事情 简化代码: public static void saveSingleSheetAsHTML(string workbook, string destination, string sheetName) {
public static void saveSingleSheetAsHTML(string workbook, string destination, string sheetName)
{
Application excel = new Application();
excel.Workbooks.Open(Filename: workbook);
Microsoft.Office.Interop.Excel._Worksheet worksheet = excel.Worksheets[sheetName];
var format = Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml;
worksheet.SaveAs(destination, format);
}
现在,当我打开生成的HTML文件时,它只输出了整个工作簿,而不是工作表。正如我在点击上面发布的链接后发现的评论中所说:
“不能在工作表上调用SaveAs-第一次调用。复制以创建工作表。”
仅包含该工作表的独立新工作簿,然后保存该工作表
工作簿。”
不知道你为什么不能。MSDN上的文档没有给出任何关于这方面的线索,并建议这应该是可能的
因此,在创建了新工作簿之后:
var newbook = excel.Workbooks.Add(1);
复制图纸,将其作为第一张图纸放置:
excelWorksheet.Copy(newbook.Sheets[1]);
然后删除默认的“Sheet1”,它将始终是第二张图纸:
newbook.Worksheets[2].Delete();
然后调用SaveAs方法,然后关闭新书:
newbook.SaveAs(Filename: destination, FileFormat: format);
newbook.Close();
这确实将新工作簿保存为HTML,但也将选项卡放在底部,我希望避免这样做,因为现在只有一个选项卡。它确实满足了我的最低要求,不过我想知道如何使它更整洁。我认为按照本文的思路应该会有所帮助:基本上是将工作表复制到新工作簿中,然后从新工作簿中保存它