SXSSFWorkbook使用補充


今天使用SXSSFWorkbook導出了一份比較復雜的Excel文件,總結如下

豎向文字

CellStyle cellStyle = sheet.getWorkbook().createCellStyle();
cellStyle.setRotation((short)255);//將文本改為豎向
cellStyle.setVerticalAlignment(VerticalAlignment.TOP);//設置單元格頂端對其

合並單元格

//第一個參數startRow,開始行
//第二個參數endRow,結束行
//第三個參數startCol,開始列
//第四個參數endCol,結束列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));//合並第一行0、1、2單元格

CellStyle克隆合並

有些情況下一個單元格需要兩個CellStyle,但是設置第二個CellStyle時第一個CellStyle會被覆蓋,官網提供了一個方法用來合並CellStyle

//第一個CellStyle,僅設置豎向顯示文字
CellStyle cellStyle1 = sheet.getWorkbook().createCellStyle();
cellStyle1.setRotation((short) 255);
//第二個CellStyle,僅設置單元格背景顏色
CellStyle cellStyle2 = sheet.getWorkbook().createCellStyle();
cellStyle2.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex());
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
//合並cellStyle1和cellStyle2,cellStyle1既可以豎向顯示文字又可以設置單元格背景顏色 cellStyle1.cloneStyleFrom(cellStyle2);

改變文本顏色

CellStyle cellStyle = sheet.getWorkbook().createCellStyle();
Font font = sheet.getWorkbook().createFont();
font.setColor(IndexedColors.RED.getIndex());
cellStyle.setFont(font);

分塊制表

按照通常的邏輯,制表的順序應該是先從第一行開始,第一行完成后,開始處理第二行,以此類推。

但是有時會遇到一種情況,分塊制表比較方便,即處理完(A1,D4)后再處理(E1,H4),但是這樣就會有一個問題,我在處理(A1,D4)時使用sheet.createRow()創建了四個Row對象,(A1,D4)處理完成后再處理(E1,H4)時,我又使用sheet.createRow()創建了四個Row對象,這時我發現,(A1,D4)中的數據被清空了,於是我想,會不會是(A1,D4)中的行對象被覆蓋了,看了源碼后發現確實是這樣

private final TreeMap<Integer, SXSSFRow> _rows = new TreeMap();
public SXSSFRow createRow(int rownum) {
    /*此處省略部分代碼*/
    SXSSFRow newRow = new SXSSFRow(this);
    this._rows.put(rownum, newRow);
    /*此處省略部分代碼*/
}

這樣的話我們只能在處理表格之前先使用sheet.createRow(index)Row對象一次性創建出來,只后需要用到Row對象時,直接使用sheet.getRow(index)即可,我自己寫了一個方法,可以參考一下。

/** 
* 在sheet頁中創建行與單元格 
* @param sheet 
* @param startRow 開始行
* @param endRow 結束行
*/
private void createRow(Sheet sheet, int startRow, int endRow) 
{    
    for (int i = startRow; i < endRow; i++) {        
        Row row = sheet.createRow(i); 
    }
}

 參考網站:http://poi.apache.org/apidocs/dev/org/apache/poi/xssf/usermodel/XSSFWorkbook.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM