Конвертировать byte [] из xls в файл xlsx и сохранить его - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь преобразовать байт [], полученный из файла XLS, который у меня есть в другом месте, в новый файл XLSX и сохранить его.Я использую Free Spire.XML, но не могу понять, как это сделать.

public byte[] ConvierteAXLSX(string cuerpo)
{
    Workbook wb = new Workbook();
    Worksheet sheet = wb.Worksheets[0];
    byte[] array = Convert.FromBase64String(cuerpo);
    sheet.InsertArray(array, 1, 1, true);
    wb.SaveToFile(AppDomain.CurrentDomain.BaseDirectory +  "sample.xlsx", ExcelVersion.Version2013);
    byte[] fileContent = File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "sample.xlsx");
    //File.Delete(AppDomain.CurrentDomain.BaseDirectory + "sample.xlsx");
    return fileContent;
}

Этот код создает файл XLSX, но просто вставляет байт [] в файл excel как массиввместо преобразования данных.

Редактировать:

Моя проблема немного отличается от этого другого вопроса.Я не могу просто прочитать исходный файл и затем сохранить его снова, так как файл находится на другом сервере и не может получить к нему доступ.Лучшее, что я могу сделать, это отправить тело документа и разобрать его в байт [].

Это также работает, если я могу преобразовать свой байт [] в файл XLS и сохранить его, тогда я мог бы использовать ответ на другой аналогичный вопрос.

Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xls");
workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2013);

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Я сделал это, сохранил байт [] в файл XLS, прочитал его и снова сохранил в файл XLSX.

public byte[] ConvierteAXLSX(string cuerpo)
        {
            File.WriteAllBytes(AppDomain.CurrentDomain.BaseDirectory + "viejo.xls", Convert.FromBase64String(cuerpo));
            Workbook workbook = new Workbook();
            workbook.LoadFromFile(AppDomain.CurrentDomain.BaseDirectory + "viejo.xls");
            workbook.SaveToFile(AppDomain.CurrentDomain.BaseDirectory + "nuevo.xlsx", ExcelVersion.Version2013);
            byte[] fileContent = File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "nuevo.xlsx");
            File.Delete(AppDomain.CurrentDomain.BaseDirectory + "viejo.xls");
            File.Delete(AppDomain.CurrentDomain.BaseDirectory + "nuevo.xlsx");
            return fileContent;
        }

Спасибо за вашу помощь!

0 голосов
/ 14 мая 2019

Война не идет, поскольку два типа файлов хранят данные совершенно по-разному. Данные в файле xls хранятся в проприетарном двоичном формате, а данные файла xmls хранятся в Open XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...