как вставить данные из таблицы Excel в базу данных (включая пробелы без их редактирования), используя Java - PullRequest
0 голосов
/ 25 октября 2019

Java-код для чтения всех ячеек на листе, включая пустые ячейки в листах Excel, и вставки тех же данных в базу данных postgresql без их редактирования.

Я уже пробовал использовать apache-poi, missingcellpolicy, replacefunction,и т. д. Но он генерирует исключение nullpointerexception.

Когда я запускаю свой код для отображения типа ячейки в Excel, он не отображает никакого типа для пробелов и полностью пропускает ячейку.

Вот код:

    package poiexcel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.Format;
import java.text.SimpleDateFormat;
//import java.util.ArrayList;
import java.util.Date;

//import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

@SuppressWarnings("unused")
public class ReadExcel {

    public static final String SAMPLE_XLSX_FILE_PATH = "C:\\Raj's Documents\\Documents\\studentdata.xlsx";

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

        try {
            FileInputStream file = new FileInputStream(new File(SAMPLE_XLSX_FILE_PATH));// Read the spreadsheet that
                                                                                        // needs to be uploaded
            XSSFWorkbook myExcelBook = new XSSFWorkbook(file);
            DataFormatter dataFormatter = new DataFormatter();

            for (Sheet myExcelsheet : myExcelBook) {
//              ArrayList<SheetDetails> details = new ArrayList<SheetDetails>();
//              for (Row row : myExcelsheet) {
                for (int i = 0; i < myExcelsheet.getPhysicalNumberOfRows(); i++) {
                    Row row = myExcelsheet.getRow(i);
                    for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) {
                        Cell cell = row.getCell(j);
                        CellType ct = cell.getCellType();
                        System.out.println(ct);
                    }
                    System.out.println();
                }
            }
            myExcelBook.close();
        }

        catch (Exception e) {
            e.printStackTrace();
        }

    }
}

Вот результат:

ЧИСЛОВАЯ СТРОКА java.lang.NullPointerException в poiexcel.ReadExcel.main (ReadExcel.java:52)

1 Ответ

0 голосов
/ 25 октября 2019

В файле 'dependencies' в build.gradle (если используется Gradle, в противном случае найдите подходящую зависимость для Maven), вставьте нужную нам зависимость:

compile group: 'org.apache.commons', имя: 'commons-csv', версия: '1.5'

Создайте следующий импорт:

import org.apache.commons.csv.*;

В таком случае парсинг файла Excel CSV выполняется так же просто, как:

public Iterable<CSVRecord> parse(String csvPath) throws IOException {
 Reader in = new FileReader(csvPath);
 return CSVFormat.EXCEL.withFirstRecordAsHeader().parse(in);
}

EXCEL можно изменить на DEFAULT, если csv-файлы представляют собой простые текстовые csv-файлы.

Затем мы можем использовать итеративный список, чтобы получить его значения по id, заголовку столбца или по enum, хотяони должны быть определены. Затем сохраните эти значения в соответствующем объекте базы данных через соответствующий репозиторий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...