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



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

有人能帮我如何在excel表中包含utf-8字符吗?

当访问firefox和chrome中的应用程序时,Splash的答案无疑是有效的,但Safari上不起作用。

as3xls的当前实现不支持UTF-8编码。saveToByteArray函数使用不支持UTF-8的BIFF2(Excel2.x)流进行编码。

BIFF5之前的所有Excel文件格式都包含简单的字节字符串。这个字节字符串由字符串的长度后跟字符数组。。。字符数组的编码取决于例如取自CODEPAGE记录。

快速解决方案可以是将ExcelFile.as中的saveToByteArray()函数更改为

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

进一步阅读:

  • 代码页标识符
  • http://en.wikipedia.org/wiki/Character_encoding
  • http://www.openoffice.org/sc/excelfileformat.pdf

相关内容

  • 没有找到相关文章

最新更新