使用 C# 编写一个方法,从工作簿中取出单个工作表并将其另存为 HTML。
我正在使用 Worksheet.SaveAs 方法,如 MSDN 中所述。 .
但是,当我查看输出时,它已经消失并保存了工作簿中的所有工作表,而不仅仅是我选择的工作表。就好像 Worksheet.SaveAs 和 Workbook.SaveAs 只做同样的事情。
简化代码:
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 文件时,它只是导出了整个工作簿,而不是工作表。
最佳答案
正如 Tim Williams 所说在我点击 I love my monkey 发布的链接后发现的评论中上图:
"You cannot call SaveAs on a worksheet - first call .Copy to create a standalone new workbook containing only that sheet, then save that workbook."
不知道为什么不能。 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,但也将选项卡放在底部,我希望避免这种情况,因为现在只有 1 个选项卡。它确实满足了我的最低需求,但我想弄清楚如何让它变得更整洁。
关于c# - Worksheet.SaveAs 方法保存所有工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25666210/