[英]Excel Interop Save as is giving compatibility checker in excel 2007
這是我的SaveAs
方法的代碼:
m_FilePath="D:\Build\abc.xlsx"
m_objOpt=System.Reflection.Missing.Value;
m_objBook.SaveAs(m_FilePath, m_objOpt, m_objOpt,
m_objOpt, m_objOpt, m_objOpt, XlSaveAsAccessMode.xlShared,
m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
現在我的問題不是如何禁用兼容性檢查器,它已經被回答了很多次。 我的問題是,兼容性檢查程序為什么會出現。 excel如何知道該文件具有excel 2003的痕跡。D:\\ Build為空。
如果要創建特定版本的Excel文件,則必須在SaveAs
方法中設置正確的FileFormat
。
即使在路徑中設置了.xls
,如果未指定文件格式,則將使用SaveAs
方法使用運行中的Excel版本保存文件。 這意味着,如果您使用Excel 2007或更高版本打開Excel 1997-2003文件,則默認情況下,如果您未設置FileFormat
參數,則SaveAs
方法會將文件SaveAs
為Excel 2007文件。
可選對象。 保存文件時使用的文件格式。 有關有效選擇的列表,請參見FileFormat屬性。 對於現有文件,默認格式為最后指定的文件格式; 對於新文件,默認值為使用的Excel版本的格式 。
如果我想同時在2003和2007上保存,這取決於系統中安裝了哪個Excel,那么我的FileFormat應該是什么?
不要像您一樣設置文件格式,否則xlWorkbookDefault
是要在2003和2007上保存的文件格式,具體取決於系統中安裝的Excel。
您需要檢測當前的Excel版本,以便在文件名中設置正確的擴展名(.xls或.xlsx) 。 如果擴展名與使用的實際fileFormat不對應,則在打開文件時,您將收到一條消息,指出擴展名與文件格式不對應。
或者 ,您建議的解決方案似乎未在fileName中設置擴展名,而是讓Excel根據檢測到Excel版本后指定的fileFormat,使用正確的擴展名來完成fileName。 在這里,您正在使用:
xlExcel8
Excel8 xlXMLSpreadsheet
Excel電子表格格式。 關於FileFormat
鏈接
另請注意,如果您在Excel 2003文件中使用某些Excel 2007功能,則不會顯示兼容性檢查器。 要隱藏消息,可以將Application.DisplayAlerts
屬性設置為false
。
我做了這樣的事情:
if (11.0 < Convert.ToDouble(report.Version))
{
//For excel 2003
workbook.SaveAs(filename, 56, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
}
else
{
//For excel 2007 and above
workbook.SaveAs(filename, 51, misval, misval, misval, misval, XlSaveAsAccessMode.xlShared, misval, misval, misval, misval, misval);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.