Excel импортировать из CSV-файла для преобразования - PullRequest
0 голосов
/ 31 января 2019

У меня проблемы с использованием Apache POI API.Я пытаюсь импортировать в Excel их только выбрать определенные строки и ячейки, чтобы извлечь из импорта.Я в настоящее время могу импортировать, но я не могу извлечь определенную ячейку.Вот код:

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;

import java.io.File;
import java.io.IOException;

public class ExcelReader {
    public static final String path = "C:/Users/xxxx/Documents/import testing.xlsx";

    public static void main(String[] args) throws IOException, InvalidFormatException {

        // Create a workbook with data from excel file
        Workbook workbook = WorkbookFactory.create(new File(path));

        // Save sheets from workbook
        Sheet sheet = workbook.getSheetAt(0);

        // Make sure the data is saved in string format using a data formatter
        DataFormatter dataFormatter = new DataFormatter();

        // Iterate through cells and columns, printing their content
        System.out.println("\n\nThe content of the excel file: " + path + "\n");
        String cellContent;
        for (Row row: sheet) {
            for(Cell cell: row) {
                cellContent = dataFormatter.formatCellValue(cell);
                if(cellContent == null || cellContent.trim().isEmpty()){
                    // Give the empty cells the content "empty", to make it easy to filter out later on
                    cellContent = "empty";
                }
                System.out.print(cellContent + "\t");
            }
            CellReference cellReference = new CellReference("A11");
            XSSFRow rowT = sheet.getRow(cellReference.getRow());
            if (rowT != null) {
                XSSFCell cell = rowT.getCell(cellReference.getCol());
            }
            System.out.println();

        }
        // Close the connection to the workbook
        workbook.close();
    }
}

Ответы [ 2 ]

0 голосов
/ 31 января 2019

попробуйте с этим для получения ячейки "A11"

XSSFCell cell = sheet.getRow(10).getCell(0); // 10 = id of the 11th row, 0 = id of the 1st (A) column

или

XSSFCell cell = sheet.getRow(10).getCell(CellReference.convertColStringToIndex("A"));

создать ссылку на ячейку для B12

CellReference cr = new CellReference("B12");
row = mySheet.getRow(cr.getRow());
cell = row.getCell(cr.getCol());
0 голосов
/ 31 января 2019

Изменение Workbook на XSSFWorkbook и Sheet на XSSFSheet, похоже, решает проблему компиляции.

XSSFWorkbook workbook = new XSSFWorkbook(new File(path));

и

XSSFSheet sheet = workbook.getSheetAt(0);
...