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,但也把标签放在底部,我希望避免,因为现在只有一个选项卡。 它确实满足我的最低需求,但是我想弄清楚如何使它更简洁。