手机
当前位置:查字典教程网 >编程开发 >Java >Java使用jxl包写Excel文件适合列宽实现
Java使用jxl包写Excel文件适合列宽实现
摘要:注意,这个只是基本可以实现,基本针对中文电子报表。1.实现思路(1)一般的中文汉字占位长度是英文字母的2倍,“方块字”很统一。(2)对于要写...

注意,这个只是基本可以实现,基本针对中文电子报表。

1.实现思路

(1)一般的中文汉字占位长度是英文字母的2倍,“方块字”很统一。

(2)对于要写入Excel中的数据统计每一列的最大列宽,最后直接将这一列的列宽设置为这个列的最大值即可。

2.实现代码

复制代码 代码如下:

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<String> row1=new ArrayList<String>(); row1.add("最合适列宽"); row1.add("这个基本可以实现");

List<String> row2=new ArrayList<String>(); 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<String>> list) throws Exception{

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

for(int i=0;i<list.size();i++){

List<String> row=list.get(i);

for(int j=0;j<row.size();j++){

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

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

if(columnBestWidth[j]<width) ///求取到目前为止的最佳列宽

columnBestWidth[j]=width;

}

}

for(int i=0;i<columnBestWidth.length;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;

}

}

3.只是实现而已

(1)这个是一次项目中写的,自动导数Excel电子报表,可以很好实现。主要是:汉字,阿拉伯数字。

(2)汉字是方块字,每个字的大小很统一,可以很惊奇的统计列宽。

(3)英文小写字母共26个,每个字母的大小差异很小,也可以实现最佳列宽。

(4)其他字符,每个字符的占位大小差异不定,比如大小字母序列“IIIIIII”和字母“DDDDDDD”。

总之,jxl.jar没有自动实现最适合列宽的方法;如果要导出的电子报表中汉字占绝大多数,就能很好的用这个程序实现最适合列宽。

【Java使用jxl包写Excel文件适合列宽实现】相关文章:

java 键盘输入的多种实现方法

Java创建文件夹及文件实例代码

java删除文件和文件夹具体实现

Java批量修改文件名的实例代码

java 使用JDOM解析xml文件

java使用Memcached简单教程

Java多线程下载的实现方法

java多线程编程之使用thread类创建线程

java中使用Filter控制用户登录权限具体实例

java遍历properties文件操作指南

精品推荐
分类导航