Добавить данные в Excel, используя базу данных - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть 2 класса

1) Сначала используется для создания Excel

2) Чтобы добавить данные в тот же Excel

Но проблема в том, что я могусоздать Excel, но я не могу добавить данные к нему

У меня есть основной класс, в котором я проверяю, существует ли файл, генерировать файл и добавляет ли он к нему данные

Но когдая пытаюсь добавить данные, это выдает следующую ошибку

Generationjava.io.IOException: Невозможно прочитать весь заголовок;Прочитано 0 байт;ожидается 512 байт

Может кто-нибудь, пожалуйста, помогите !!!

Заранее спасибо

  public void generateExcelFile() throws ClassNotFoundException, SQLException, IOException {
        try(  Connection connect = DriverManager.getConnection( 
                   "jdbc:mysql://localhost:3306/test" , 
                   "root" ,""
                );

                Statement statement = connect.createStatement();
                ResultSet resultSet = statement.executeQuery("select * from table );
                   FileOutputStream out = new FileOutputStream(new File("sample.xls"));
                )
        {
        Class.forName("com.mysql.jdbc.Driver");
        XSSFWorkbook workbook = new XSSFWorkbook(); 
        XSSFSheet spreadsheet = workbook.createSheet("sample");
        XSSFRow row = spreadsheet.createRow(0);
        XSSFCell cell;
        cell = row.createCell(0);
        cell.setCellValue("ID");
        cell = row.createCell(1);
        cell.setCellValue("NAME");
        cell = row.createCell(2);
        cell.setCellValue("ADDRESS");
        cell = row.createCell(3);

        int i = 1;

        while(resultSet.next()) {
           row = spreadsheet.createRow(i);
           cell = row.createCell(0);
           cell.setCellValue(resultSet.getString("id"));
           cell = row.createCell(1);
           cell.setCellValue(resultSet.getString("name"));
           cell = row.createCell(2);
           cell.setCellValue(resultSet.getString("address"));
           i++;
        }
        workbook.write(out);
       logger.info("Excel file generated!!");
     }
        catch(Exception e){
            System.out.println("Exception in Excel Generation");
        }
        }


    public void appendFile()   {
        try(  Connection connect = DriverManager.getConnection( 
               "jdbc:mysql://localhost:3306/test" , 
               "root" ,""
            );

            Statement statement = connect.createStatement();
            ResultSet resultSet = statement.executeQuery("select * from table where date=some date after excel generation);//for eg

               FileOutputStream out = new FileOutputStream("sample.xls");
            )
    {

    Class.forName("com.mysql.jdbc.Driver");
    FileInputStream input = new FileInputStream("sample.xls");
     HSSFWorkbook workbook1 = new HSSFWorkbook(input);

     HSSFSheet sheet = workbook1.getSheetAt(0);
     int lastrow= sheet.getLastRowNum();
     System.out.println("*********lastrow************"+lastrow);
     Row row = sheet.createRow(lastrow);
     Cell cell;
     int i = lastrow;

      while(resultSet.next()) {
           row = spreadsheet.createRow(i);
           cell = row.createCell(lastrow);
           cell.setCellValue(resultSet.getString("id"));
           cell = row.createCell(lastrow+1);
           cell.setCellValue(resultSet.getString("name"));
           cell = row.createCell(lastrow+2);
           cell.setCellValue(resultSet.getString("address"));
           i++;
        }


     workbook1.write(out);
    logger.info("Excel file generated!!");
  }
    catch(Exception e){
        System.out.println("Exception in Excel Generation"+e);
    }
...