使用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/

10-10 18:51