Open XML SDK – сохранить файл шаблона (.xltx в .xlsx)

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

Excel не может открыть файл «sa123.xlsx», поскольку формат файла или расширение недействительны. Убедитесь, что файл не был поврежден и расширение файла соответствует формату файла.

string templateName = "C:\\temp\\sa123.xltx"; byte[] docAsArray = File.ReadAllBytes(templateName); using (MemoryStream stream = new MemoryStream()) { stream.Write(docAsArray, 0, docAsArray.Length); // THIS performs doc copy File.WriteAllBytes("C:\\temp\\sa123.xlsx", stream.ToArray()); } 

Для этого вам нужно использовать Open XML SDK 2.0 . Ниже приведен фрагмент кода, который работал для меня, когда я его пробовал:

 byte[] byteArray = File.ReadAllBytes("C:\\temp\\sa123.xltx"); using (MemoryStream stream = new MemoryStream()) { stream.Write(byteArray, 0, (int)byteArray.Length); using (SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Open(stream, true)) { // Change from template type to workbook type spreadsheetDoc.ChangeDocumentType(SpreadsheetDocumentType.Workbook); } File.WriteAllBytes("C:\\temp\\sa123.xlsx", stream.ToArray()); } 

Что делает этот код, так это получение вашего файла шаблона и его SpreadsheetDocument объект SpreadsheetDocument . Тип этого объекта – это Template , но поскольку вы хотите, чтобы он был как Workbook вы вызываете метод ChangeDocumentType чтобы изменить его из Template в ChangeDocumentType . Это будет работать, поскольку базовый XML является тем же самым между файлами .xltx и .xlsx, и это был именно тот тип, который вызывал у вас проблему.

Excel видит расширение .xlsx и пытается открыть его как файл рабочей таблицы. Но это не так. Это файл шаблона. Когда вы открываете шаблон в Excel и сохраняете его как .xlsx-файл, он преобразует его в формат рабочей таблицы. То, что вы делаете, такое же, как изменение расширения в имени файла. Попробуйте в проводнике Windows, и вы получите тот же результат.

Я считаю, что вы должны выполнить то, что хотите, используя объектную модель Excel . Я не использовал это, хотя.

  • Можно ли добавить пользовательскую часть в книгу Excel?
  • Ячейки XML неправильно отображаются как SharedStrings, если они не являются
  • openxml sdk excel как анализировать и вычислять формулу
  • Вам нужно сохранить документ Open XML после работы над ним?
  • Office Open XMl SDK Написание номеров для листа
  • Open XML SDK: форматирование части ячейки Excel
  • Создание рабочей книги только с MVC-контроллера с OpenXML
  • Любой простой способ встраивания файлов (привязка столбцов / строк) с использованием EPPlus или POI-подобных или других библиотек на основе OpenXML?
  • Использование OpenKML SDK для захвата всех значений ячеек в виде строки
  • Экспорт DataTable в Excel с открытым Xml SDK в c #
  • OpenXML SDK2.5 (Excel): как определить, содержит ли ячейка числовое значение?
  • Interesting Posts

    Excel поиск значения добавить значение рядом с colum

    Перетащите значение копирования, если ячейка содержит «текст», пока следующая ячейка, содержащая «текст»,

    DAX: отдельный счет с использованием нескольких столбцов

    Как найти соответствующие номера в Excel?

    Импортирование файла excel в базу данных SQL, как игнорировать вторую строку; asp.net & C #

    Продолжить поиск в таблице, где предыдущая ячейка оставила найденные критерии

    Если строка темы письма начинается с определенных значений, тогда сделайте что-нибудь

    Рабочий лист и код неправильно связаны

    записывать данные в excel с использованием командного файла

    Excel добавляет значения из столбцов, начинающихся с того же слова?

    Может ли макрос (Excel) обрабатываться ssis?

    PHP Excel – не работает в Linux

    Несколько ячеек выбирают и копируют в одну строку на другом листе

    Программно обновлять внедренный файл excel

    VBA Excel: вставьте экстракт электронной таблицы в электронную почту Outlook

    Давайте будем гением компьютера.