Javaはjxlを使用する.JArパッケージ作成Excelファイルの最適な列幅問題の基本的な実現
6706 ワード
以前はjxlを使っていました.jarパッケージ、Excelファイルを読み書きしました.列幅に最適な問題にも注意しなかったがjxl.JArは列幅に最適な機能を提供していませんが、前回使って書いたように、列幅に最適な機能を基本的に実現できます.
注意、これは基本的に実現できるだけで、基本的には中国語の電子レポートに対してです.
1.実現構想
(1)一般的な中国語漢字の占有長さは英字の2倍で、「四角い字」は統一されている.
(2)Excelに書き込むデータについて各列の最大列幅を統計し、最後にこの列の列幅をこの列の最大値に直接設定すればよい.
2.実装コード
3.実現するだけ
(1)これは一度のプロジェクトで書かれた、自動導関数Excel電子レポートで、うまく実現できます.主に漢字、アラビア数字です.
(2)漢字は四角い字で、文字ごとの大きさが統一されていて、驚くほど列幅を統計することができます.
(3)英字小文字は26文字で,各文字の大きさの違いは小さく,最適な列幅も実現できる.
(4)他の文字は、各文字の占有サイズの違いが不定であり、例えば、大文字シーケンス「III III」とアルファベット「DDDDDDD」である.
とにかくjxl.JArは列幅に最適な方法を自動的に実現していない.エクスポートする電子レポートに漢字が圧倒的に多い場合は、このプログラムで最適な列幅を実現することができます.
jxl.JArのExcelに対する基本的な操作はJavaデータ書き出し(書き込み)Excelファイル解析を参照してください.
Javaデータインポート(読み取り)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)他の文字は、各文字の占有サイズの違いが不定であり、例えば、大文字シーケンス「III III」とアルファベット「DDDDDDD」である.
とにかくjxl.JArは列幅に最適な方法を自動的に実現していない.エクスポートする電子レポートに漢字が圧倒的に多い場合は、このプログラムで最適な列幅を実現することができます.
jxl.JArのExcelに対する基本的な操作はJavaデータ書き出し(書き込み)Excelファイル解析を参照してください.
Javaデータインポート(読み取り)Excelファイル解析