将byte []从xls转换为xlsx文件并保存

时间:2019-05-14 14:22:33

标签: c# excel xls excel-interop

我正在尝试将从其他地方的XLS文件中获得的byte []转换为新的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文件,但只是将byte []像数组一样插入到Excel文件中,而不是转换数据。

编辑:

我的问题与其他问题略有不同。我不能只读取原始文件然后再次保存它,因为该文件位于另一台服务器中并且无法访问它。我能做的最好的事情是发送文档正文并将其解析为byte []。

如果我可以将byte []转换为XLS文件并保存,那么它也可以工作,那么我可以使用其他类似问题的答案。

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

2 个答案:

答案 0 :(得分:0)

这不会产生冲突,因为两种文件类型存储的数据完全不同。 xls文件中的数据以专有二进制格式存储,而xmls文件数据以Open XML存储。

答案 1 :(得分:0)

我做到了,将byte []保存到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;
        }

感谢您的帮助!