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) 이것은 한 프로젝트에서 쓴 것으로 자동 도수 엑셀 전자 보고서로 잘 실현될 수 있다.주로 한자, 아라비아 숫자.(2) 한자는 네모난 글자로 각 글자의 크기가 통일되어 놀라운 통계 열폭을 얻을 수 있다.(3) 영문 소문자는 모두 26개로 각 자모의 크기 차이가 적고 최적 열폭을 실현할 수 있다.(4) 다른 문자, 각 문자의 차지 크기 차이, 예를 들어 대소문자 서열 "IIIII"와 자모 "DDDDDDD"등이다.
어쨌든, jxl.jar는 열 넓이에 가장 적합한 방법을 자동으로 실현하지 않았습니다.만약 내보내려는 전자 보고서에서 한자가 절대 다수를 차지한다면, 이 프로그램으로 열폭에 가장 적합한 것을 실현할 수 있을 것이다.

좋은 웹페이지 즐겨찾기