1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【備忘録】javaとpoiとExcelのあれこれ(java)

Last updated at Posted at 2023-04-12
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();
   }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?