Worksheet.SaveAs方法保存所有图纸
使用C#编写一个方法,将单个工作表从工作簿中取出并保存为HTML。
我正在使用MSDN上描述的Worksheet.SaveAs方法。
但是,当我查看输出时,它已经保存了工作簿中的所有工作表,而不仅仅是我select的工作表。 就像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)在评论中提到的,我在上面贴上我爱我的猴子的链接后发现:
“您不能在工作表上调用SaveAs – 首先调用.Copy创build一个包含该工作表的独立新工作簿,然后保存该工作簿。”
不知道为什么你不能。 MSDN上的文档不提供任何线索,并build议它应该是可能的。
所以创build了一个新的工作簿:
var newbook = excel.Workbooks.Add(1);
复制表单,将其放置为第一个表单:
excelWorksheet.Copy(newbook.Sheets[1]);
然后删除默认的“Sheet1”,这将永远是第二张:
newbook.Worksheets[2].Delete();
然后调用SaveAs方法,然后closures新书:
newbook.SaveAs(Filename: destination, FileFormat: format); newbook.Close();
这确实保存了新的工作簿为HTML,但也把标签放在底部,我希望避免,因为现在只有一个选项卡。 它确实满足我的最低需求,但是我想弄清楚如何使它更简洁。