2014-09-04 18 views
2

使用C#編寫一個方法,將單個工作表從工作簿中取出並保存爲HTML。Worksheet.SaveAs方法保存所有表格

我正在使用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文件,它只是走了,並遠銷整個工作簿,而不是表。

+1

我認爲沿着這篇文章的行應該有所幫助:http://stackoverflow.com/questions/14734578/c-sharp-excel-save-each-worksheet-to-a-new-workbook基本上覆制工作表到新的工作簿,然後您可以從新的工作簿中保存它 – 2014-09-04 13:04:25

回答

3

正如評論我打張貼I love my monkey上面的鏈接後發現說的Tim Williams

「你不能叫工作表另存爲 - 首先調用.Copy創建僅包含 獨立的新的工作簿該工作表,然後保存 工作簿。「

不知道爲什麼你不能。 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標籤了。它確實滿足了我的最低需求,但我想弄清楚如何使它更簡潔。