Flex Excel使用as3xls导出utf-8字符

时间:2015-03-19 18:38:51

标签: flex utf-8 export-to-excel as3xls

我正在使用as3xls库将数据表导出到我的flex应用程序中的excel表。我的应用程序是多语言,包含utf-8字符。

有人可以帮我解决如何在excel表中包含utf-8字符的问题吗?

当使用firefox和chrome访问应用程序时,Splash的答案无疑是有效的,但可以在 Safari 上工作。

1 个答案:

答案 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"); 

进一步阅读: