使用C#编写一种从工作簿中取出单个工作表并将其另存为HTML的方法。
我正在使用MSDN上描述的Worksheet.SaveAs方法。
但是,当我查看输出时,它已经消失并保存了工作簿中的所有工作表,而不仅仅是我选择的工作表。好像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发布的链接后发现:
“您不能在工作表上调用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,但是也将选项卡放在底部,我希望避免使用该选项卡,因为现在只有1个选项卡。它确实满足了我的最低需求,尽管我想弄清楚如何使其更加整洁。
关于c# - Worksheet.SaveAs方法保存所有图纸,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25666210/