В java eclipse я извлек данные из базы данных и вставил в уже существующий Excel.Уже имеющиеся данные удаляются - PullRequest
0 голосов
/ 24 февраля 2019

В java eclipse я запустил запрос для извлечения данных из базы данных и вставил в уже существующий лист Excel (exceldatabase16) на диске C.Уже существующий excel -exceldatabase16 содержит имена столбцов в первой строке.А данные, вставленные в базу данных exceld, 16 вставляются из строки 6 и столбца F. Тем не менее данные строки 1 удаляются.

public static  void retrieveData1( Connection connection) throws SQLException, IOException 
    {
         Statement stmt = null;
           ResultSet rs = null;
         stmt = connection.createStatement();


         rs = stmt.executeQuery("SELECT * FROM countries where region_id='3' ");
//         getColumnNames(rs);


         XSSFWorkbook workbook = new XSSFWorkbook(); 
         XSSFSheet spreadsheet = workbook.createSheet("countriesdetails");
         XSSFRow row = spreadsheet.createRow(5);
         XSSFCell cell;
         cell = row.createCell(5);

         cell.setCellValue("country id");
         cell = row.createCell(6);
         cell.setCellValue("country name");
         cell = row.createCell(7);
         cell.setCellValue("region");

         int i = 6;

         while(rs.next()) {
            row = spreadsheet.createRow(i);
            cell = row.createCell(5);      
            cell.setCellValue(rs.getString(1));

            cell = row.createCell(6);
            cell.setCellValue(rs.getString(2));
            cell = row.createCell(7);
            cell.setCellValue(rs.getInt(3));

            i++;
         }

         FileOutputStream out = new FileOutputStream(new File("C:\\Users\\lenovo\\workspace\\ApachePoi\\exceldatabase16.xlsx"));
         workbook.write(out);
         out.close();
         workbook.close();
         System.out.println("exceldatabase.xlsx written successfully");     
     }

1 Ответ

0 голосов
/ 24 февраля 2019

Похоже, вы перезаписываете существующий файл новым при каждом запуске этой программы.

Согласно документации XSSF, существует подпись метода создания XSSFWorkbook, которая может открыть существующий файл вместосделать новый.

Попробуйте что-нибудь вроде:

 XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream("C:\\Users\\lenovo\\workspace\\ApachePoi\\exceldatabase16.xlsx"));
...