簡體   English   中英

Excel Interop另存為在Excel 2007中提供兼容性檢查器

[英]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。 在這里,您正在使用:

  • 56: xlExcel8 Excel8
  • 46: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM