groupExcel.java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
public class groupRow{
public static void main(String[] args) {
try {
// エクセルファイルを読み込む
FileInputStream fileIn = new FileInputStream("path/to/input/file.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(fileIn);
XSSFSheet sheet = workbook.getSheetAt(0);
// グループ化する行の範囲を指定
int startRow = 1;
int endRow = 3;
// 指定した行の範囲をグループ化する
sheet.groupRow(startRow, endRow);
sheet.setRowGroupCollapsed(startRow, true);
// グループ化した行を表示する(デバッグ用)
for (int i = startRow; i <= endRow; i++) {
sheet.getRow(i).setCollapsed(true);
}
// グループ化した結果をファイルに書き出す
FileOutputStream fileOut = new FileOutputStream("path/to/output/file.xlsx");
workbook.write(fileOut);
fileOut.close();
// ワークブックを閉じる
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
特定のセルにコメントを記載
groupExcel.java
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
public class ExcelCommentExample {
public static void main(String[] args) {
try {
// Excelファイルを読み込む
FileInputStream inputStream = new FileInputStream("path/to/input/file.xlsx");
Workbook workbook = new XSSFWorkbook(inputStream);
Sheet sheet = workbook.getSheetAt(0);
// コメントを追加するセルを取得する
Row row = sheet.getRow(0);
Cell cell = row.getCell(0);
// コメントを作成する
Drawing drawing = sheet.createDrawingPatriarch();
CreationHelper factory = workbook.getCreationHelper();
// コメントの範囲を設定する
ClientAnchor anchor = factory.createClientAnchor();
anchor.setCol1(cell.getColumnIndex());
anchor.setCol2(cell.getColumnIndex() + 1);
anchor.setRow1(row.getRowNum());
anchor.setRow2(row.getRowNum() + 1);
// コメントを作成し、内容を設定する
Comment comment = drawing.createCellComment(anchor);
comment.setString(factory.createRichTextString("これはコメントです。"));
// コメントをセルに追加する
cell.setCellComment(comment);
// Excelファイルを保存する
FileOutputStream outputStream = new FileOutputStream("path/to/output/file.xlsx");
workbook.write(outputStream);
outputStream.close();
// Workbookをクローズする
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
特定のセルの値を取得
getCellData.java
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcelFile {
public static void main(String[] args) throws Exception {
String filename = "path/to/excel/file.xlsx"; // Excelファイルのパス
String sheetname = "Sheet1"; // シート名
int rownum = 0; // 行番号(0から始まる)
int cellnum = 0; // 列番号(0から始まる)
// Excelファイルを読み込む
InputStream input = new FileInputStream(filename);
Workbook workbook = new XSSFWorkbook(input);
// 指定されたセルを取得する
Sheet sheet = workbook.getSheet(sheetname);
Row row = sheet.getRow(rownum);
Cell cell = row.getCell(cellnum);
// セルの値を文字列として取得する
String cellValue = cell.getStringCellValue();
// セルの値を出力する
System.out.println("Cell Value: " + cellValue);
// ワークブックをクローズする
workbook.close();
}
}
Excelから取得した値を二次元配列に格納
ReadExcelFile .java
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcelFile {
public static void main(String[] args) throws Exception {
String filename = "path/to/excel/file.xlsx"; // Excelファイルのパス
String sheetname = "Sheet1"; // シート名
// Excelファイルを読み込む
InputStream input = new FileInputStream(filename);
Workbook workbook = new XSSFWorkbook(input);
// シートを取得する
Sheet sheet = workbook.getSheet(sheetname);
// シートの行数を取得する
int rowCount = sheet.getLastRowNum() + 1;
// シートの列数を取得する
int columnCount = sheet.getRow(0).getLastCellNum();
// 二次元配列を作成する
String[][] data = new String[rowCount][columnCount];
// セルの値を二次元配列に格納する
for (int i = 0; i < rowCount; i++) {
Row row = sheet.getRow(i);
for (int j = 0; j < columnCount; j++) {
Cell cell = row.getCell(j);
String cellValue = "";
if (cell.getCellType() == CellType.STRING) {
cellValue = cell.getStringCellValue();
} else if (cell.getCellType() == CellType.NUMERIC) {
cellValue = String.valueOf(cell.getNumericCellValue());
}
data[i][j] = cellValue;
}
}
// 二次元配列の内容を出力する
for (int i = 0; i < rowCount; i++) {
for (int j = 0; j < columnCount; j++) {
System.out.print(data[i][j] + "\t");
}
System.out.println();
}
// ワークブックをクローズする
workbook.close();
}
}
Excelから取得した値をリストに格納
ReadExcelFile .java
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcelFile {
public static void main(String[] args) throws Exception {
String filename = "path/to/excel/file.xlsx"; // Excelファイルのパス
String sheetname = "Sheet1"; // シート名
// Excelファイルを読み込む
InputStream input = new FileInputStream(filename);
Workbook workbook = new XSSFWorkbook(input);
// シートを取得する
Sheet sheet = workbook.getSheet(sheetname);
// データを格納するリストを作成する
List<List<String>> data = new ArrayList<>();
// シートの行数を取得する
int rowCount = sheet.getLastRowNum() + 1;
// シートの列数を取得する
int columnCount = sheet.getRow(0).getLastCellNum();
// リストにデータを格納する
for (int i = 0; i < rowCount; i++) {
Row row = sheet.getRow(i);
List<String> rowData = new ArrayList<>();
for (int j = 0; j < columnCount; j++) {
Cell cell = row.getCell(j);
String cellValue = "";
if (cell.getCellType() == CellType.STRING) {
cellValue = cell.getStringCellValue();
} else if (cell.getCellType() == CellType.NUMERIC) {
cellValue = String.valueOf(cell.getNumericCellValue());
}
rowData.add(cellValue);
}
data.add(rowData);
}
// リストの内容を出力する
for (List<String> rowData : data) {
for (String cellData : rowData) {
System.out.print(cellData + "\t");
}
System.out.println();
}
// ワークブックをクローズする
workbook.close();
}
}