.xslm в .xslx с использованием workbook.SaveAs() во взаимодействии.Excel, выполняется без проблем, но не сохраняет файл

#c# #.net #excel #excel-interop

#c# #.net #excel #excel-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. Я могу открыть PF1.xslm в Office Excel и сохранить его как .xslx. Итак, то же самое предполагается и для работы программно.

Комментарии:

1. Есть ли в файле .xlsm макросы?

Ответ №1:

Вы не можете сохранять файлы с макросами в нем в формате .xlsx. Если вы сохраняете файл самостоятельно, вы должны получить сообщение об ошибке. Я подозреваю, что макрос просто сдается и не сохраняет его, вместо того, чтобы отображать это сообщение об ошибке.