我正在使用as3xls库将数据表导出到我的flex应用程序中的excel表。我的应用程序是多语言,包含utf-8字符。
有人可以帮我解决如何在excel表中包含utf-8字符的问题吗?
当使用firefox和chrome访问应用程序时,Splash的答案无疑是有效的,但不可以在 Safari 上工作。
答案 0 :(得分:1)
当前的as3xls实现不支持UTF-8编码。 saveToByteArray
函数使用BIFF2(Excel 2.x)流进行编码,但不支持UTF-8。
最高BIFF5的所有Excel文件格式都包含简单的字节字符串。该 字节字符串由字符串后跟的长度组成 字符数组。 ...字符数组的编码是相关的 在当前记录中,例如从CODEPAGE记录中获取。
快速解决方法可能是将saveToByteArray()
中的ExcelFile.as
功能更改为
public function saveToByteArray(codePageID: int, charSet: String):ByteArray
在br.writeTag(bof);
if (codePageID > 0)
{
var codePage:Record = new Record(Type.CODEPAGE);
codePage.data.writeShort(codePageID);
br.writeTag(codePage);
}
并将cell.data.writeUTFBytes(value);
更改为cell.data.writeMultiByte(value, charSet);
这样您就可以根据需要调整字符集。
var xls:ExcelFile = new ExcelFile();
...
// write xls with cyrillic characters
var bytes:ByteArray = xls.saveToByteArray(28595, "iso-8859-5");
进一步阅读: