#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. Если вы сохраняете файл самостоятельно, вы должны получить сообщение об ошибке. Я подозреваю, что макрос просто сдается и не сохраняет его, вместо того, чтобы отображать это сообщение об ошибке.