我正在尝试将从其他地方的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);
答案 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;
}
感谢您的帮助!