.xlsm到.xlsx使用Interop.Excel中的workbook.SaveAs()执行没有问题,但没有保存文件

时间:2011-04-08 06:49:43

标签: c# .net excel excel-interop

Interop.Excel版本12

Office Excel 2007

我已经开发过代码来打开.xslm文件,然后将其转换(保存)为.xslx。在这之间,我确实需要做一些处理但是没关系。以下是代码:

namespace Exceltest
{
    class Program
    {
        static void Main(string[] args)
        {

            Application oXL = null;
            oXL = new Application();

            oXL.Visible = false;
            oXL.DisplayAlerts = false;

            try
            {
                Workbook book = oXL.Workbooks.Open("E:\\CorrectPF1.xlsm", 0, true, 5, "access123", "", true,
                                                   XlPlatform.xlWindows, "\t", false, false, 0, true, null, XlCorruptLoad.xlNormalLoad);

                Worksheet worksheet = (Worksheet)book.Sheets["Resource allocation"];
                worksheet.Activate();

                oXL.Visible = false;
                oXL.DisplayAlerts = false;

                book.SaveAs("E:\\PF1.xlsx", XlFileFormat.xlOpenXMLWorkbook,
                                            "", Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange,
                                                XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing,
                                                Type.Missing, false);
            }
            catch (Exception  ex)
            {
             //Handling exception here
            }

        }
    }
}

此代码执行时没有任何问题(没有任何异常)但没有使用.xslx扩展名保存文件。我发现它适用于某些文件但不适用于其他文件。比如,它不适用于名为PF1.xslm的文件。我可以在Office Excel中打开PF1.xslm并将其另存为.xslx。所以,同样的假设也是以编程方式工作的。

1 个答案:

答案 0 :(得分:0)

您无法将包含宏的文件保存为.xlsx格式。如果您自己保存文件,则应收到错误消息。我怀疑宏只是放弃而不是保存它,而不是显示错误信息。