我正在使用 as3xls 库将数据表导出到我的 flex 应用程序中的 excel 工作表。我的应用程序是多语言的,其中包含 utf-8 字符。
谁能帮助我如何在我的 Excel 表中包含 utf-8 字符?
Splash 的答案无疑在 firefox 和 chrome 中访问应用程序时有效,但在Safari上无效。
我正在使用 as3xls 库将数据表导出到我的 flex 应用程序中的 excel 工作表。我的应用程序是多语言的,其中包含 utf-8 字符。
谁能帮助我如何在我的 Excel 表中包含 utf-8 字符?
Splash 的答案无疑在 firefox 和 chrome 中访问应用程序时有效,但在Safari上无效。
as3xls的当前实现不支持 UTF-8 编码。该saveToByteArray
函数使用不支持 UTF-8 的 BIFF2 (Excel 2.x) 流进行编码。
最高 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");
进一步阅读: