SXSSFWorkbookは補充を使用します.

5003 ワード

今日は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   
CelSteyleクローン合併
次のセルは二つのCelSteyleを必要とする場合がありますが、二つ目のCelSteyleを設定する時に最初のCelSteyleが上書きされます.公式サイトではCelSteyleを結合する方法が提供されます.
//   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);
ブロック分け表
通常の論理では、タブの順序は最初の行から開始し、最初の行が完了したら、2行目の処理を開始します.これを類推します.
しかし、ブロック表が便利である場合があります.(A1,D4)を処理してから(E1,H4)を処理します.しかし、(A1,D4)を処理する時にsheet.createRow()を使ってRowオブジェクトを4つ作成しました.(A1,D4)の処理が完了したら(E1,H4)を処理すると、sheet.createRow()を使って4つのRowオブジェクトを作成しました.この時、(A1,D4)の中のデータが空になっていることが分かりました.(A1,D4)の中の行の対象が上書きされたのではないかと思います.ソースを見て、確かにそうです.
private final TreeMap _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