- 浏览: 717451 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (389)
- flex (150)
- java (55)
- flex_sharedObject (4)
- iphone/android (7)
- red5 (4)
- blazeds (19)
- ajax (3)
- flex&java (9)
- 聊天室 (2)
- flex的问题 (1)
- game (8)
- flex_xml (1)
- flex组件学习 (2)
- JGroups (1)
- 中转站 (2)
- ruby (7)
- flex_js (5)
- C/C++ (14)
- perl (2)
- db (13)
- air (10)
- hibernate (8)
- flash_flex_as_3d (2)
- struts (4)
- dwr (8)
- freemarker (2)
- AS (22)
- 工具 (6)
- js_jquery_ext_yui (4)
- .net (1)
- C# (1)
- 前端 (1)
最新评论
-
136900923:
您好,您的代码我不是很懂,我想跟您交流一下,我的qq邮箱:13 ...
hibernate做无限极菜单树如此简单 -
fykyx521:
两个同一个功能
flex_flush_Socket 安全沙箱解决 -
ustb:
你上下两个代码类之间没关系
flex_flush_Socket 安全沙箱解决 -
u010656335:
...
flex发送QQ表情 -
u010656335:
flex发送QQ表情
http://blog.csdn.net/Baijinwen/archive/2009/01/06/3722408.aspx
as3xls开源项目的中文乱码问题 收藏
<script type="text/javascript"> document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length>300) { text = text + "\r\n\n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData("text", text); } }, 100); } } </script><script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
as3xls,read and write Excle in Flex,开源项目首页: http://code.google.com/p/as3xls/
不过它对中文支持的不是很好,不知道现在有没有解决这个问题。有段时间我用过一下,曾经采取一个取巧的方式去解决,但我想并不是很好,如果有谁有更好的解决方法,或者已经对这个东东改造好的,给我一份,嘿嘿。
当初我临时解决的方式就是修改com/as3xls/xls/ExcelFile.as的大概255行那里:
- //var len:uint = String(value).length;
- var len: uint = GetStringLength(String(value)); //Bryan update
- cell.data.writeByte(len);
- //cell.data.writeUTFBytes(value);
- cell.data.writeMultiByte(String(value), "cn-gb" ); //Bryan update
增加两个函数:
package cn.ishion.excel.util
{
import com.as3xls.biff.BIFFVersion;
import com.as3xls.biff.BIFFWriter;
import com.as3xls.biff.Record;
import com.as3xls.xls.ExcelFile;
import com.as3xls.xls.Sheet;
import com.as3xls.xls.Type;
import flash.utils.ByteArray;
import mx.utils.StringUtil;
//注释
public class ConstomExcelFile extends ExcelFile
{
public function ConstomExcelFile()
{
}
private function GetStringLength(objString:String):int
{
var temp:int = 0;
for(var i:int=0;i<objString.length;i++)
{
if(isChinese(objString.substring(i,i+1)))
{
temp += 2;
}
else{temp += 1;}
}
return temp;
}
//判断是否是中文 bryan add
private function isChinese(char:String):Boolean{
if(char == null){
return false;
}
char = StringUtil.trim(char);
var pattern:RegExp = /^[\u0391-\uFFE5]+$/;
var result:Object = pattern.exec(char);
if(result == null) {
return false;
}
return true;
}
override public function saveToByteArray():ByteArray{
// var s:Sheet = _sheets[0] as Sheet; //这行源代码 改成如下
var s:Sheet =super.sheets[0] as Sheet;
var br:BIFFWriter = new BIFFWriter();
// Write the BOF and header records
var bof:Record = new Record(Type.BOF);
bof.data.writeShort(BIFFVersion.BIFF2);
bof.data.writeByte(0);
bof.data.writeByte(0x10);
br.writeTag(bof);
// Date mode
var dateMode:Record = new Record(Type.DATEMODE);
dateMode.data.writeShort(1);
br.writeTag(dateMode);
// Store built in formats
var formats:Array = ["General",
"0", "0.00", ",0", ",0.00",
"", "", "", "",
"0%", "0.00%", "0.00E+00",
"?/?", "??/??",
"M/D/YY", "D-MMM-YY", "D-MMM", "MMM-YY"];
var numfmt:Record = new Record(Type.BUILTINFMTCOUNT);
numfmt.data.writeShort(formats.length);
br.writeTag(numfmt);
for(var n:uint = 0; n < formats.length; n++) {
var fmt:Record = new Record(Type.FORMAT);
fmt.data.writeByte(formats[n].length);
fmt.data.writeUTFBytes(formats[n]);
br.writeTag(fmt);
}
var dimensions:Record = new Record(Type.DIMENSIONS);
dimensions.data.writeShort(0);
dimensions.data.writeShort(s.rows+1);
dimensions.data.writeShort(0);
dimensions.data.writeShort(s.cols+1);
br.writeTag(dimensions);
for(var r:uint = 0; r < s.rows; r++) {
for(var c:uint = 0; c < s.cols; c++) {
var value:* = s.getCell(r, c).value;
var cell:Record = new Record(1);
cell.data.writeShort(r);
cell.data.writeShort(c);
if(value is Date) {
var dateNum:Number = (value.time / 86400000) + 24106.667;
cell.type = Type.NUMBER;
cell.data.writeByte(0);
cell.data.writeByte(15);
cell.data.writeByte(0);
cell.data.writeDouble(dateNum);
} else if(isNaN(Number(value)) == false && String(value) != "") {
cell.type = Type.NUMBER;
cell.data.writeByte(0);
cell.data.writeByte(0);
cell.data.writeByte(0);
cell.data.writeDouble(value);
} else if(String(value).length > 0) {
cell.type = Type.LABEL;
cell.data.writeByte(0);
cell.data.writeByte(0);
cell.data.writeByte(0);
// var len:uint = String(value).length; //源文 改成如下
var len:uint=this.GetStringLength(value);
cell.data.writeByte(len);
// cell.data.writeUTFBytes(value);//这行源代码 改成如下
cell.data.writeMultiByte(value,"gbk");
} else {
cell.type = Type.BLANK;
cell.data.writeByte(0);
cell.data.writeByte(0);
cell.data.writeByte(0);
}
br.writeTag(cell);
}
}
// Finally, the closing EOF record
var eof:Record = new Record(Type.EOF);
br.writeTag(eof);
br.stream.position = 0;
return br.stream;
}
}
}
示例private function exportExcel():void{
var ex:ExcelFile=new ConstomExcelFile();
var arr:ArrayCollection=new ArrayCollection();
var sheet:Sheet=new Sheet();
sheet.header="dsafsdafsaf";
sheet.footer="foot";
sheet.name="hello";
sheet.resize(10,10);
for(var i:int=0;i<10;i++){
sheet.setCell(i,i,"大家好");
trace(ex.sheets);
}
ex.sheets.addItem(sheet);
var file:File=File.desktopDirectory.resolvePath("test333.xls");
var fs:FileStream=new FileStream();
fs.open(file,FileMode.WRITE);
fs.writeBytes(ex.saveToByteArray());
fs.close();
}
评论
// line 122
cell.data.writeByte(len);
楼主有没想过, 如果 len 超过了 byte 的范围,cell里的内容仍然能显示完整吗 ?
发表评论
-
转深入理解Flash的沙箱 – Security Domains
2014-01-22 09:35 837一篇很经典的进阶文章,国外牛人的分享,清晰明了,图文并茂,适 ... -
flex 很有用的东东!
2010-06-17 23:50 1264网上找了好久,原来API中就有! -
flex出现的一些问题
2010-04-08 12:19 16641.kingnarestyle.swf和flexlib 的Su ... -
flex 样式工作原理【转】
2010-04-08 12:09 1324http://hi.baidu.com/ls_mcx/blog ... -
在FlexBuilder3中使用Actionscript3进行元编程
2010-03-11 19:15 1037http://flash.9ria.com/thread-46 ... -
Error: No class registered for interface mx
2010-02-01 09:36 1244http://www.gold98.net/blog/arti ... -
Flash 视频(FLV)编码,转换,录制,播放方案一网打尽
2010-01-16 18:34 2018http://www.htmlit.com.cn/post/8 ... -
FLEX中使用FLVPlayback控件.
2010-01-16 18:29 1399http://www.cnblogs.com/xxcainia ... -
flex 继承Application及xml命名空间
2009-12-30 18:43 1520<?xml version="1.0" ... -
flex Repeater effert加效果
2009-12-15 17:25 1522package cn.ishion.component { ... -
学习自定义组件---ConstomButton
2009-12-14 15:06 1832效果只是让Button动了下, 上传了flash源文件 p ... -
flex编译生成的As代码
2009-12-09 18:30 1312new flexProject ->起名叫 test ... -
flex自定义preloader
2009-12-09 17:43 1914package cn.ishion.component { ... -
flex自定义程序 preloader 加载多个资源
2009-12-09 02:05 2285package cn.ishion.component { ... -
Flex Builder编译错误An internal build error has occurred的解决方法
2009-12-05 16:44 3213原文:http://as3blog.com/resources ... -
flex uicomponent.addChild(Button) Button不显示
2009-12-04 19:23 2144设置下Button的宽度和高度就行了 var ui:U ... -
FlashDevelop配置Flex4(gumbo)环境
2009-12-04 10:27 3053http://www.flexrain.cn/fl ... -
flex gooogle code as3xls导出数据到excel
2009-12-03 19:16 2360var ex:ExcelFile=new ExcelFile ... -
Flex坐标系统及转换
2009-12-02 22:10 3099http://flash.9ria.com/thread-40 ... -
flex动态切换皮肤
2009-11-23 18:06 2023http://www.cnblogs.com/mobile/a ...
相关推荐
as3xls库通过处理UTF-8编码确保在导入时不会出现乱码问题。 4. **源码和工具**: 博文提供的源码示例可以帮助开发者更好地理解如何在实际项目中应用as3xls库。通常,这样的示例会展示如何初始化库,加载文件,以及...
总结起来,"flex前台直接导出excel"是一种优化用户体验的技术手段,通过在前端生成Excel文件,既可以解决字符编码问题,又能减少服务器的工作量。开发者需要了解并掌握相关的库和API,才能在Flex应用中顺利实现这个...
通过AS3XLS,开发者可以轻松地将Flex Datagrid中的数据转换成Excel格式,满足用户的数据导出需求。 二、1.0.1版本改进 相比之前的1.0版本,AS3XLS-1.0.1进行了重要的更新和优化。其中最显著的改进是对中文字符的...
`as3xlsUTF8`库是基于`as3xls`库进行改进的,主要解决了中文字符在Excel中乱码的问题。`as3xls`库是由Jeroen van Rijswijk开发的一个开源项目,它提供了对Microsoft Excel文件(.xls)的完全读写功能,但默认情况下...
2. **导出数据**:在查询结果集上,即在结果显示区域(注意不要选中任何具体的行或单元格),点击鼠标右键,选择【Copy to Excel】选项下的【Copy as xls/xlsx】,将数据导出为Excel文件。需要注意的是,根据PL/SQL ...
`as3xlsUTF8` 是一个专门用于处理Excel文件的开源库,它支持Unicode编码(UTF-8),这意味着你可以处理包含多种语言的数据而不用担心字符乱码问题。该库的核心在于提供了一套API,使得在AS3中创建、修改和读取Excel...
### PBdatawindow导出Excel函数知识点详解 #### 函数概述 在PowerBuilder应用程序开发中,经常需要将数据窗口(DataWindow)对象中的数据导出到Excel文件中,以方便进行进一步的数据处理或分享。本文档介绍了一个名...
下面我们将深入探讨如何使用PHPExcel库导出包含中文数据的Excel表格,并解决UTF-8编码的问题。 首先,要使用PHPExcel库,你需要先将其下载并引入到你的项目中。PHPExcel库通常包含多个类文件,这些文件提供了操作...
以下是一个具体的解决方案,用于解决使用PHPExcel导出到.xls文件时出现的乱码问题。 首先,确保已经正确安装了PHPExcel库。在示例代码中,我们看到`include 'global.php';`,这意味着全局配置文件已经被引入,其中...
本文将探讨如何在Adobe Flex中读取包含中文字符的Excel文件,主要涉及使用AS3XLS库来解决这个问题。 首先,AS3XLS是一个ActionScript 3的开源库,专门用于处理Microsoft Excel文件。它允许Flex应用程序创建、读取和...
### GridView导出Excel方法 #### 一、概述 在日常工作中,经常需要将网页上的数据导出至Excel文件,方便用户进行数据查看或进一步处理。本文档将详细介绍一种使用GridView控件导出数据到Excel的方法,并提供代码...
### vb.net页面内容导出Excel实现方法 在本篇文章中,我们将探讨如何使用VB.NET将Web页面的内容导出到Excel文件中。此方法不仅适用于不同版本的Excel(如2003、2007等),而且能够很好地保留网页原有的布局和格式。...
选中该表,右键点击“Save as...”,在弹出的对话框中,选择保存类型为"XLS Instance",这是为了确保Excel文件能正确处理中文字符,避免出现乱码问题。如果遇到长数字型字符串被自动格式化的问题,应勾选“String ...
MySQL 实现导出 Excel 文件的方法主要涉及数据库查询和文件输出技术。在 MySQL 中,可以直接使用 SQL 命令将数据导出为 CSV 或其他文本格式,这些格式可以被大多数电子表格软件如 Microsoft Excel 识别。一种简单的...
导出excel表格 ``` 这里的`./Process1.php`是后台处理页面的URL,当用户点击超链接时,会向这个页面发送请求。 **后台处理页面 (Process.php)** 在后台处理页面,我们需要实现数据的读取和Excel文件的生成。以下...
在导入或导出这些数据时,如果不进行正确的编码转换,可能会导致乱码问题。因此,我们需要了解如何在Python中使用`openpyxl`、`pandas`等库进行编码设置,或者在VBA脚本中使用`TextToColumns`函数来指定不同的字符...
`to_csv`函数被用来实现这个转换,其中`index=False`表示不保存行索引,`sep='\t'`设置字段间的分隔符为制表符,`encoding='utf-8'`确保文件使用UTF-8编码,这是常见的文本文件编码标准,可以避免字符乱码问题。...
如果在导出Excel时遇到中文乱码的问题,可以尝试以下方法: 1. **确保编码正确**:确认PHP脚本的字符集设置为UTF-8。 2. **使用正确的文件类型**:对于XLSX文件,确保使用`Excel2007`作为`PHPExcel_IOFactory::...
标题中的"**dcr.rar_DBF_dbf excel_dbf to**"表明我们要讨论的是关于将`.dbf`文件转换为更常见且易于操作的Excel格式(`.xls`或`.xlsx`)的过程。描述中提到的".dbf文件处理,转化为excel"进一步确认了这个主题。现在...
通过对dw2xls工具的升级,我们解决了从PB 9到PB 11.5版本迁移过程中遇到的字符串编码问题。主要关注点包括API函数的定义变化、字符串编码转换函数的选择等。通过上述改进措施,确保了程序在PB 11.5中的兼容性和稳定...