程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java應用jxl包寫Excel文件合適列寬完成

Java應用jxl包寫Excel文件合適列寬完成

編輯:關於JAVA

Java應用jxl包寫Excel文件合適列寬完成。本站提示廣大學習愛好者:(Java應用jxl包寫Excel文件合適列寬完成)文章只能為提供參考,不一定能成為您想要的結果。以下是Java應用jxl包寫Excel文件合適列寬完成正文


留意,這個只是根本可以完成,根本針對中文電子報表。

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沒有主動完成最合適列寬的辦法;假如要導出的電子報表中漢字占絕年夜多半,就可以很好的用這個法式完成最合適列寬。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved