C# Excel互操作另存为在Excel 2007中提供兼容性检查器
以下是我的C# Excel互操作另存为在Excel 2007中提供兼容性检查器,c#,excel,excel-interop,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_ob
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文件,必须在方法中设置正确的
文件格式
即使在路径中设置了.xls
,如果未指定文件格式,将使用运行版本的Excel使用SaveAs
方法保存文件。这意味着,如果使用Excel 2007或更高版本打开Excel 1997-2003文件,如果未设置FileFormat
参数,则默认情况下,SaveAs
方法将文件另存为Excel 2007文件
可选对象。保存文件时要使用的文件格式。暂时
有效选项列表,请参见FileFormat属性。对于现有的
文件,默认格式为最后指定的文件格式用于新的
文件,默认为所用Excel版本的格式
如果我想同时保存2003和2003,那么我的文件格式应该是什么
2007取决于系统中安装的excel
不要像您那样设置文件格式,或者xlWorkbookDefault
是您希望在2003和2007两个版本上保存时使用的文件格式,具体取决于系统中安装的Excel
您需要检测Excel的当前版本,以便在文件名中设置正确的扩展名(.xls或.xlsx)
。如果扩展名与所使用的实际文件格式不一致,则在打开文件时会出现一条消息,说明扩展名与文件格式不一致
或,您建议的解决方案似乎没有在文件名中设置扩展名,并让Excel根据检测到Excel版本后指定的文件格式使用正确的扩展名填写文件名。您使用的是:
- 56:
Excel8xlExcel8
- 46:
Excel电子表格格式xlXMLSpreadsheet
另外请注意,如果在Excel 2003文件中使用某些Excel 2007功能,则不会阻止显示兼容性检查器。要隐藏消息,可以将属性设置为
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);
}
if(11.0
我是否知道您正在打开一个2003 Excel文件,对其执行某些修改,并仅通过依赖此代码将其保存为2007(或更高版本)文件?我不明白您所说的打开2003 Excel文件的意思?是的,我的开发环境有excel 2003,但是使用它的客户端有excel 2007,我指的是一个*.xls文件。问题是:您是否正在使用此代码打开一个*.xls文件并将其保存为*.xlsx文件?@varocabas否我没有打开任何已保存的xls这是一个新实例,它是以家长身份创建的。internet连接不会很快恢复,也无法提供帮助。尽管如此,我的回答还是与克里斯的回答一致(+1代表他)如果我想在2003年和2007年都保存,那么我的文件格式应该是什么呢?这取决于安装在system@Shrivallabh不要像您那样设置文件格式,或者xlWorkbookDefault
是要在2003年和2007年保存的文件格式,具体取决于系统中安装的excel。您需要检测Excel的当前版本,以便在文件名中设置正确的扩展名(.xls或.xlsx)。如果扩展名与所使用的实际文件格式不一致,则在打开文件时会出现一条消息,说明扩展名与文件格式不一致。如果您愿意,我可以用某种方法更新我的答案。@Shrivallabh但如果您在Excel 2003文件中使用某些Excel 2007功能,则不会阻止显示兼容性检查器。要隐藏消息,可以将属性设置为False。很高兴我能提供帮助:)。我将编辑我的答案,以反映我最后的评论,因为我没有正确理解你试图做什么。对我来说,这是一个格式问题,正如你在最后告诉我的那样。谢谢!