SXSSFWorkbookは補充を使用します.
5003 ワード
今日はSXSSFWorkbookを使って比較的複雑なExcelファイルを導出しました.
縦向きのテキスト
次のセルは二つのCelSteyleを必要とする場合がありますが、二つ目のCelSteyleを設定する時に最初のCelSteyleが上書きされます.公式サイトではCelSteyleを結合する方法が提供されます.
通常の論理では、タブの順序は最初の行から開始し、最初の行が完了したら、2行目の処理を開始します.これを類推します.
しかし、ブロック表が便利である場合があります.
縦向きのテキスト
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