2017-02-02 2 views
0

Итак, я знаю, что для преобразования 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} 

я получаю указанный пакет недействителен. Основная часть отсутствует.

+0

Является оригинальным файлом '.xls', содержащим любые макросы VBA? Вы пытались сохранить файл как '.xlsm' вместо' .xlsx' (т. Е. Изменить формат с 'xlOpenXMLWorkbook' на' xlOpenXMLWorkbookMacroEnabled')? – bassfader

+0

файл - это совершенно новый файл excel, который я создал, чтобы проверить, будет ли это работать, но я попробую regarldes, изменив его на xlsm, чтобы увидеть результат. Я попробовал, чтобы он не позволял мне напрямую перейти с .xls на .xlsm Это расширение не может использоваться с выбранным типом файла. Измените расширение файла в текстовом поле «Имя файла» или выберите другой тип файла, изменив тип «Сохранить как». » – Harry

+0

Я написал [SO Doc] (http://stackoverflow.com/documentation/openxml/6967/getting-started -with-openxml/27908/create-a-new-spreadsheet-with-openxml # t = 20170202224619959639) о том, как создать .xlsx с OpenXml. Почему бы не использовать этот метод для его создания вместо взаимодействия? – Taterhead

ответ

0

Привет, я смог достичь того, чего хотел здесь, используя interop, чтобы открыть файл xls и использовать как вариант для сохранения его как xlsx, тогда все, что мне нужно было сделать, это скопировать создание нового файла xlsx, имея excel, генерируют зависимости, необходимые для меня.

excel.Workbook workbook = Globals.ThisAddIn.Application.Workbooks.Open(txbBrowse.Text); 
       workbook.SaveAs(newFileName, excel.XlFileFormat.xlOpenXMLWorkbook); 
       workbook.Close(); 
FileInfo file = new FileInfo(filePathCopy); 
     if (file.Exists) 
      file.Delete(); 
     File.Copy(filePathOriginal, filePathCopy);