Apache POI:JavaでExcelファイルを作成、読み取り、編集する

一般に、スプレッドシートは、請求書の計算と作成、レポートの管理などを容易にするために、財務および会計の分野で多く使用されます。アプリケーションのいずれかの部分で、作成、読み取り、書き込みなどの操作が必要な場合は、いくつかの API が利用可能であり、最も強力なのは API です。 APACHE.

POI API は Word や PowerPoint 文書も処理するため、時間の経過とともにユーザーはより自信を持ってきました。

Download

API はページ APACHE POI。ダウンロード後、次の.jarをインポートします。プロジェクト内:
  • poi
  • poi-ooxml
  • poi-ooxml-schemas
  • xmlbeans

Authoring and writing to an xls

Excel ファイルを処理する 2 つの主要なクラスは次のとおりです。

HSSFWorkbook: 拡張子が xls.
XSSFWorkbook: 拡張子が xlsx.

次のコードは、異なる型の値を持つ配列を作成します:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Excel {
public static void main(String[] args) {

//1.空のドキュメントを作成
XSSFWorkbook wb = new XSSFWorkbook();
//2.空のスプレッドシートを作成
Sheet = wb.createSheet("new sheet");
//3.行を作成し、その中に何かを入れます
Row row = sheet.createRow((short)0);
//4.新しいセルを作成
Cell cell = row.createCell(0);
//5.値を設定
cell.setCellValue(1.2);

//異なるタイプのセルを追加します
/*int*/row.createCell(1).setCellValue(3);
/*char*/row.createCell(2).setCellValue('c');
/*文字列*/row.createCell(3).setCellValue("文字列");
/*boolean*/row.createCell(4).setCellValue(false);

FileOutputStream fileOut;
{
fileOut = new FileOutputStream("nouveauFichier.xlsx");
wb.write(fileOut);
fileOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Apache poi で Excel に書き込む


現在の日付と時刻を挿入したい場合、日付形式は次のように作成されます:

//セルに挿入 F1
cell = row.createCell((short) 6);
cell.setCellValue(new Date());
XSSFCellStyle cellStyle = wb.createCellStyle();
XSSFDataFormat xssfDataFormat = wb.createDataFormat();
//日付と時刻のフォーマットを作成します
cellStyle.setDataFormat(xssfDataFormat.getFormat("dd/mm/yyyy h:mm"));
cell.setCellStyle(cellStyle);
excel apache poi insert date

Text formatting

Text formatting には、フォント、サイズなどが含まれます。イタリック体/太字/下線、色、背景、配置.

セルに適用する配置の例 Date:

//行の高さ
row.setHeightInPoints(20);
//水平方向の整列
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
//垂直方向の整列
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_TOP);
Apache POI 行と列の配置 Excel

Change font

/*新しいフォントを作成*/
Fontフォント= wb.createFont();
//サイズ: 12px
font.setFontHeightInPoints((short)12);
font.setFontName("Courier New");
font.setItalic(true);
font.setBold(true);

/*新しいスタイルを作成*/
CellStyle cs = wb.createCellStyle();
cs.setFont(font);
//セル3(D1)
row.getCell(3).setCellStyle(cs);
Apache POI change Excel font

Color and background

/*背景色の変更*/
XSSFCellStyle csColor=wb.createCellStyle();
csColor.setFillForegroundColor(new XSSFColor(new Color(194, 154, 250)));
csColor.setFillPattern(csCouleur.SOLID_FOREGROUND);
//セル3にスタイルを適用
row.getCell(2).setCellStyle(csColor);

/*フォントの色を変更*/
Font font = wb.createFont();
font.setColor((short)45);
CellStyle csCF = wb.createCellStyle();
csCF.setFont(font);
//セルにスタイルを適用 0
row.getCell(0).setCellStyle(csCF);
Apache POI Change font color and background Excel

mergeing cells

この例では、4つのセルを水平方向と垂直方向に結合して中央に配置します。 B2、C2、B3、C3 をaddMergedRegion マージするセルの範囲をパラメータとして取ります.

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;

public class Fusion{

public static void main(String[] args) throws FileNotFoundException {
Workbook wb = new HSSFWorkbook();
シート sheet = wb.createSheet("sheet1");

行 row = sheet.createRow((short) 1);
セル cell = row.createCell((short) 1);
cell.setCellValue("セルマージテスト");

sheet.addMergedRegion(new CellRangeAddress(
1, //最初の行 B2
2, //最後の行 B3
1, //最初の列 C2
2 //最後の列 C3
));
/*Center*/
cell.getCellStyle().setAlignment((short)2);
cell.getCellStyle().setVerticalAlignment((short)1);

FileOutputStream fs = null;
{
fs = new FileOutputStream("testFusion.xlsx");
wb.write(fs);
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
excel Apache Poiフュージョンセル

数式の使用法

Excelは主に、結果セルでの複雑な数式の計算と使用に使用されます。Apache poi は、数式を使用してセルを追加およびテストするための非常に効率的な方法を提供します.

次のコードは、4 学期の平均の簡単な計算を扱います。式は (A2+B2+C2+D2)/4.

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Excel_formule {

public static void main(String[] args) {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("Average");

行 row = sheet.createRow((short) 0);
row.createCell(0).setCellValue("第1四半期");
row.createCell(1).setCellValue("第2四半期");
row.createCell(2).setCellValue("Quarter3");
row.createCell(3).setCellValue("第4四半期");
row.createCell(4).setCellValue("平均");

行 row1 = sheet.createRow((short) 1);
row1.createCell(0).setCellValue(2);
row1.createCell(1).setCellValue(5);
row1.createCell(2).setCellValue(1);
row1.createCell(3).setCellValue(7);
row1.createCell(4).setCellFormula("(A2+B2+C2+D2)/4");

{
FileOutputStream out = new FileOutputStream(new File("formuletest.xlsx"));
wb.write(out);
out.close();
System.out.println("Excelファイルが正常に作成されました");

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Excel apache poi calculus with formula

セルの評価と参照

セルの値を表示するには、そのタイプを知る必要があります。Apache poiは、クラス FormulaEvaluator.evaluateFormulaCellは、数式があるかどうかを確認するチェックボックスをオンにします。その場合は、それを評価して数式の型を返します.

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Excel_parcourir {

public static void main(String[] args) throws IOException {
FileInputStream file = new FileInputStream(new File("formuletest.xlsx"));
//xlsx ファイルを参照するワークブック インスタンスを作成します
XSSFWorkbook wb = new XSSFWorkbook(file);
XSSFSheet sheet = wb.getSheetAt(0);

FormulaEvaluator formulaEvaluator =
wb.getCreationHelper().createFormulaEvaluator();

for (行: シート) {//行を参照
for (セルセル: 行) {//列を参照
//セルの種類を評価し
switch (formulaEvaluator.evaluateInCell(cell).getCellType())
{
box Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t\t");
estate;
box Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + "\t");
estate;
}
}
System.out.println();

}
}
Output

Quarter1 Quarter2 Quarter3 Quarter4 Average 
2.0 5.0 1.0 7.0 3.75