java jxl 写 excel文件_Java使用jxl包写Excel文件适合列宽实现

import java.io.File;

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import jxl.Workbook;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

//中文名

public class ExcelBestColumn

{

public static void main(String argus[]) throws Exception{

//构造数据,有两行

List row1=new ArrayList();    row1.add("最合适列宽");    row1.add("这个基本可以实现");

List row2=new ArrayList();    row2.add("Best Column Width");    row2.add("Haha");

List list=new ArrayList();    list.add(row1);    list.add(row2);

//写数据到Excel中

WritableWorkbook book= Workbook.createWorkbook(new File("t.xls"));

WritableSheet sheet=book.createSheet("测试",0);

writeDataToSheet(sheet,list);

book.write();

book.close();

}

public static void writeDataToSheet(WritableSheet sheet,List> list) throws Exception{

int columnBestWidth[]=new  int[list.get(0).size()];    //保存最佳列宽数据的数组

for(int i=0;i

List row=list.get(i);

for(int j=0;j

sheet.addCell(new Label(j,i,row.get(j)));

int width=row.get(j).length()+getChineseNum(row.get(j));    ///汉字占2个单位长度

if(columnBestWidth[j]

columnBestWidth[j]=width;

}

}

for(int i=0;i

sheet.setColumnView(i, columnBestWidth[i]);

}

}

public static int getChineseNum(String context){    ///统计context中是汉字的个数

int lenOfChinese=0;

Pattern p = Pattern.compile("[\u4e00-\u9fa5]");    //汉字的Unicode编码范围

Matcher m = p.matcher(context);

while(m.find()){

lenOfChinese++;

}

return lenOfChinese;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值