我正在尝试将我从其他地方的XLS文件中获得的byte[]转换为新的XLSX文件,然后保存它。我正在使用免费的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);
发布于 2019-05-14 22:34:13
这不是战争,因为两种文件类型存储的数据完全不同。xls文件中的数据以专有的二进制格式存储,而xmls文件数据存储在Open XML中。
发布于 2019-05-14 23:03:59
我这样做了,将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;
}
谢谢你的帮忙!
https://stackoverflow.com/questions/56132689
复制相似问题