Итак, я знаю, что для преобразования xls в файл xlsx вам необходимо физически сохранить файл, поэтому я делаю это, используя interop. Я физически открываю файл и использую SaveAs, который является таким же, как и как обычный способ. Моя проблема в том, если я открыть файл и сохранить его в обычном порядке, то я могу получить к нему доступ, но если я это сделать программно (см ниже) она не будет выполненаДоступ к файлу xls x OpenXML с программным обеспечением, сохраненным как XLSX
using excel = Microsoft.Office.Interop.Excel;
excel.Workbook workbook = Globals.ThisAddIn.Application.Workbooks.Open(txbBrowse.Text);
workbook.SaveAs(newFileName, excel.XlFileFormat.xlOpenXMLWorkbook);
workbook.Close();
Если я теперь открыть этот файл, он будет открыть только штраф с, говоря его повреждения, однако, если я пытаюсь получить доступ к нему с помощью OpenXML
using (var spreadsheet = SpreadsheetDocument.Open(filename, true, new OpenSettings{ AutoSave = true }))
{//...do something here}
я получаю указанный пакет недействителен. Основная часть отсутствует.
Является оригинальным файлом '.xls', содержащим любые макросы VBA? Вы пытались сохранить файл как '.xlsm' вместо' .xlsx' (т. Е. Изменить формат с 'xlOpenXMLWorkbook' на' xlOpenXMLWorkbookMacroEnabled')? – bassfader
файл - это совершенно новый файл excel, который я создал, чтобы проверить, будет ли это работать, но я попробую regarldes, изменив его на xlsm, чтобы увидеть результат. Я попробовал, чтобы он не позволял мне напрямую перейти с .xls на .xlsm Это расширение не может использоваться с выбранным типом файла. Измените расширение файла в текстовом поле «Имя файла» или выберите другой тип файла, изменив тип «Сохранить как». » – Harry
Я написал [SO Doc] (http://stackoverflow.com/documentation/openxml/6967/getting-started -with-openxml/27908/create-a-new-spreadsheet-with-openxml # t = 20170202224619959639) о том, как создать .xlsx с OpenXml. Почему бы не использовать этот метод для его создания вместо взаимодействия? – Taterhead