Shr*_*abh 2 c# excel excel-interop
这是我的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);
Run Code Online (Sandbox Code Playgroud)
现在我的问题不是如何禁用兼容性检查器,这已经被多次回答了。我的问题是为什么兼容性检查器会出现。excel怎么知道文件有excel 2003的痕迹。D:\Build是空的。
如果要创建特定版本的 Excel 文件,则必须设置正确FileFormat的SaveAs方法。
即使你.xls在路径中设置了文件格式,如果没有指定文件格式,也会使用运行版本的Excel来保存文件SaveAs。这意味着如果您使用 Excel 2007 或更高版本打开 Excel 1997-2003 文件,SaveAs如果不设置该FileFormat参数,该方法将默认将文件保存为 Excel 2007 文件。
可选对象。保存文件时使用的文件格式。有关有效选项的列表,请参阅 FileFormat 属性。对于现有文件,默认格式是最后指定的文件格式;对于新文件,默认为正在使用的 Excel 版本的格式。
如果我想根据系统中安装的 excel 在 2003 和 2007 上保存,那么我的 FileFormat 应该是什么?
xlWorkbookDefault如果您想在 2003 和 2007 上保存,请不要像您一样设置文件格式,或者是要使用的文件格式,具体取决于系统中安装的 Excel。
您需要的是检测当前版本的 Excel,以便在文件名中设置正确的扩展名(.xls 或 .xlsx)。如果扩展名与所使用的实际文件格式不对应,当您打开文件时,您将收到一条消息,说明扩展名与文件格式不对应。
或者,您提出的解决方案似乎没有在fileName中设置扩展名,而是让Excel根据您在检测到Excel版本后指定的fileFormat使用正确的扩展名完成fileName。你在这里使用:
xlExcel8 Excel8xlXMLSpreadsheet Excel电子表格格式。链接关于 FileFormat
另请注意,如果您在 Excel 2003 文件中使用某些 Excel 2007 功能,它不会阻止显示兼容性检查器。要隐藏消息,您可以将该Application.DisplayAlerts属性设置为false。
| 归档时间: |
|
| 查看次数: |
5302 次 |
| 最近记录: |