一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java使用jxl包寫Excel文件適合列寬實現

Java使用jxl包寫Excel文件適合列寬實現

2019-10-21 12:43java教程網 Java教程

用jxl.jar包,讀寫過Excel文件。也沒有注意最適合列寬的問題,但是jxl.jar沒有提供最適合列寬的功能,上次用到寫了一下,可以基本實現最適合列寬。

注意,這個只是基本可以實現,基本針對中文電子報表。

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沒有自動實現最適合列寬的方法;如果要導出的電子報表中漢字占絕大多數,就能很好的用這個程序實現最適合列寬。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产卡一卡二卡三卡四 | 日本在线视频网 | 护士被多人调教到失禁h | 精品国产91久久久久 | 午夜理论片日本中文在线 | 精品亚洲欧美中文字幕在线看 | 精品操 | 国产精品成人免费观看 | 青青草原手机在线视频 | 国产偷窥女洗浴在线观看亚洲 | 91制片厂果冻传媒首页 | 波多野结衣中文字幕在线 | 91传媒制片厂果冻有限公司 | 午夜伦理 第1页 | 国产一卡 | 秋葵视频成人 | 亚1洲二区三区四区免费 | 欧美一级欧美三级在线 | 99亚洲自拍| 国产 日韩欧美 | 免费特黄一级欧美大片在线看 | 免费日批软件 | 32d乳白色的奶罩未删除 | 国产男女乱淫真视频全程播放 | 国产欧美成人免费观看 | 亚洲精品中文字幕在线 | 性生大片免费看 | 久久精品一卡二卡三卡四卡视频版 | 亚洲国产第一区二区三区 | 欧美成人免费观看的 | 韩剧在线免费观看 | 日本一区二区高清免费不卡 | 欧美日韩亚洲国内综合网俺 | 午夜理伦片免费 | 色噜噜狠狠狠综合曰曰曰88av | 香蕉国产精品偷在线播放 | 香港成人社区 | 人人擦| 69老司机亚洲精品一区 | 人妖欧美一区二区三区四区 | 亚洲大片免费观看 |