c# - Worksheet.SaveAs 方法保存所有工作表

标签 c# excel

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

相关文章:

VBA 可见单元格粘贴错误 1004

regex - 可以单独提取组的每个出现,但不能作为重复组

javascript - 如何将后台代码和 javascript 函数结合起来?

c# - PHP - C# TCP 客户端/服务器如何发送字符串?

c# - 使用 DropBox api 时的进度条

c# - vs2010 c#调试高亮颜色

c# - 打印转换后的 XML

用于增加月份的 Excel 公式

excel - 业务对象结果限制 65529

java - 使用 Excel 文件中的数据刷新表 JTable