as3 xls 엑셀 디 코딩 문제 해결 방법 내 보 내기
8388 단어 JavaScriptcExcelFlexC#
as3xls 오픈 소스 프로젝트 의 중국어 코드 문제 수장 하 다
< script type = "text / javascript" > document. body. oncopy = function () {if (window. clipboardData) {setTimeout (function () {var text = clipboardData. getData (& quot; text & quot;); if (text & amp; & amp; text. length & gt; 300) {text = text + & quot; \ r 본문 은 CSDN 블 로그 에서 왔 습 니 다. 출처: & quot; + location. href; clipboard Data. setData("text", text); } }, 100); } }
as3xls, read and write Excle in Flex, 오픈 소스 프로젝트 첫 페이지: http://code.google.com/p/as3xls/
하지만 그것 은 중국어 에 대한 지원 이 좋 지 않 습 니 다. 지금 이 문 제 를 해결 할 수 있 을 지 모 르 겠 습 니 다. 한동안 사용 해 봤 습 니 다. 교묘 한 방식 으로 해결 한 적 이 있 지만 좋 지 않다 고 생각 합 니 다. 만약 에 누가 더 좋 은 해결 방법 이 있 거나 이미 이 물건 을 개조 한 것 이 있다 면 저 에 게 하 나 를 주세요. 헤헤.
처음에 제 가 임시로 해결 한 방법 은 come / as3xls / xls / Excel File. as 의 약 255 줄 을 수정 하 는 것 이 었 습 니 다.
var len: uint = GetStringLength(String(value)); //Bryan update
//cell.data.writeUTFBytes(value);
두 함수 추가:
private function GetStringLength(objString:String): int
var temp: int = 0;
{
{
}
}
return temp;
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();
} 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.