使用工作簿将.xslm转换为.xslx.在Interop.Excel中的SaveAs(),执行时没有问题,但不保存文件

本文关键字:执行 保存文件 有问题 SaveAs 中的 xslm 工作簿 转换 Excel Interop xslx | 更新日期: 2023-09-27 17:49:32

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。因此,同样的假设也可以通过编程方式工作。

使用工作簿将.xslm转换为.xslx.在Interop.Excel中的SaveAs(),执行时没有问题,但不保存文件

不能将包含宏的文件保存为.xlsx格式。如果您自己保存文件,则会收到一条错误消息。我怀疑宏只是放弃并没有保存它,而不是显示错误消息。