Как напечатать два столбца в Excel рядом после записи всех строк из первого столбца? - PullRequest
1 голос
/ 28 июня 2019

Я создал код, в котором данные доступны через базу данных, а затем эти данные записываются в лист Excel.

Теперь данные успешно записаны.Но проблема равна , когда данные записываются в таблицу Excel в первом столбце файла Excel, и все данные записываются правильно.

Но во время второго столбца строки печатаются во втором столбце, откуда последняя строка заканчивается в первом столбце.

Я хочу напечатать столбец рядом.пожалуйста, обратитесь к этому изображению ссылка для лучшего понимания.Прошу пролить свет, будет полезно ответить на мой вопрос.Я сократил свой код для простоты.

    Integer col = 5;
    Double sl_counter = 0.0;
    Double coff_counter = 0.0;
    try {

                ConnectionClass cn = new ConnectionClass();
                Connection con = cn.connectDb();
            String filename = "E:\\export.csv" ;
                HSSFWorkbook workbook = new HSSFWorkbook();
                HSSFSheet sheet = workbook.createSheet("FirstSheet");
            HSSFRow leave_count = sheet.createRow((short)4);
                while(rs7.next()){
                     HSSFRow SL = sheet.createRow(col);
                     SL.createCell(17).setCellValue(rs7.getString("leave_Date"));
                     col++;
                     sl_counter++;
                }
                while(rs11.next()){
                       HSSFRow SL = sheet.createRow(col);
                       SL.createCell(17).setCellValue(rs11.getString("leave_Date")+"      (FIRST HALF DAY)");
                       col++;
                       sl_counter += 0.5;
                }
                while(rs15.next()){
                     HSSFRow SL= sheet.createRow(col);
                     SL.createCell(17).setCellValue(rs15.getString("leave_Date")+"      (SECOND HALF DAY)");
                     col++;
                     sl_counter += 0.5;
                }
                leave_count.createCell(17).setCellValue(sl_counter);

                //int cols = 5;   
                 while(rs8.next()){

                     HSSFRow leave_date = sheet.createRow(col);
                     leave_date.createCell(18).setCellValue(rs8.getString("leave_Date"));
                     col++;
                     coff_counter++;
                }
                while(rs12.next()){
                       HSSFRow leave_date = sheet.createRow(col);
                       leave_date.createCell(18).setCellValue(rs12.getString("leave_Date")+"      (FIRST HALF DAY)");
                       col++;
                       coff_counter += 0.5;
                }
                while(rs16.next()){
                     HSSFRow leave_date = sheet.createRow(col);
                     leave_date.createCell(18).setCellValue(rs16.getString("leave_Date")+"      (SECOND HALF DAY)");
                     col++;
                     coff_counter += 0.5;
                }

                leave_count.createCell(18).setCellValue(coff_counter);

                FileOutputStream fileOut = new FileOutputStream(filename);
                workbook.write(fileOut);
                fileOut.close();
    //            workbook.close();
                cl_counter = 0.0;
                col = 0;

            } catch ( Exception ex ) {
                System.out.println(ex);
            } 

1 Ответ

0 голосов
/ 02 июля 2019

Чтобы создать новый лист, вам нужен второй объект HSSFSheet и его нужно инициализировать.

Я добавил poi jar из URL для доступа к классу HSSFSheet.

Я уже подготовил демонстрацию с библиотекой HSSF, используя Список временных данных, чтобы вы могли иметь небольшое представление о том, как использовать эту библиотеку для создания файла Excel при создании нескольких листов.

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Excel {
    public static void main(String[] args) {
        int col = 1;
        try {

            String filename = "I:\\export.csv";
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet("FirstSheet");
            List rs7 = new ArrayList();
            rs7.add("06/27/2019");

            List rs8 = new ArrayList();
            rs8.add("06/23/2019");

            List rs11 = new ArrayList();
            rs11.add("06/23/2019");

            List rs12 = new ArrayList();
            rs12.add("06/26/2019");

            List rs15 = new ArrayList();
            rs15.add("06/26/2019");

            List rs16 = new ArrayList();
            rs16.add("06/25/2019");

            int r7,r8, r11,r12, r15,r16;
            r7=r8=r11=r12=r15=r16=0;
            sheet.createRow(0).createCell(1).setCellValue("SL");
            while (r7<rs7.size()) {
                HSSFRow SL = sheet.createRow(col++);
                SL.createCell(1).setCellValue(""+rs7.get(r7++));
            }
            while (r11<rs11.size()) {
                HSSFRow SL = sheet.createRow(col++);
                SL.createCell(1).setCellValue(rs11.get(r11++) + "      (FIRST HALF DAY)");
            }
            while (r15<rs15.size()) {
                HSSFRow SL = sheet.createRow(col++);
                SL.createCell(1).setCellValue(rs15.get(r15++) + "      (SECOND HALF DAY)");
            }


            HSSFSheet sheet2 = workbook.createSheet("SecondSheet");
            sheet2.createRow(0).createCell(1).setCellValue("C-OFF");
            col=1;
            while (r8<rs8.size()) {

                HSSFRow leave_date = sheet2.createRow(col++);
                leave_date.createCell(1).setCellValue(""+rs8.get(r8++));
            }
            while (r12<rs12.size()) {
                HSSFRow leave_date = sheet2.createRow(col++);
                leave_date.createCell(1).setCellValue(rs12.get(r12++) + "      (FIRST HALF DAY)");
            }
            while (r16<rs16.size()) {
                HSSFRow leave_date = sheet2.createRow(col++);
                leave_date.createCell(1).setCellValue(rs16.get(r16++) + "      (SECOND HALF DAY)");
            }
            FileOutputStream fileOut = new FileOutputStream(filename);
            workbook.write(fileOut);
            fileOut.close();
            col = 0;

        } catch (Exception ex) {
            System.out.println(ex);
        }
    }
}

Если вам не нужно создавать несколько листов и вам нужно отображать данные только в одном листе данных, тогда вы заменяете вышеуказанную вторую часть на приведенный ниже код, который поможет вам понять использование.

//HSSFSheet sheet2 = workbook.createSheet("SecondSheet");
            sheet.getRow(0).createCell(2).setCellValue("C-OFF");
//          sheet2.createRow(0).createCell(1).setCellValue("C-OFF");
            col=1;
            while (r8<rs8.size()) {
                sheet.getRow(col++).createCell(2).setCellValue(""+rs8.get(r8++));
                /*HSSFRow leave_date = sheet2.createRow(col++);
                leave_date.createCell(1).setCellValue(""+rs8.get(r8++));*/
            }
            while (r12<rs12.size()) {
                sheet.getRow(col++).createCell(2).setCellValue(""+rs12.get(r12++)+ "      (FIRST HALF DAY)");
                /*HSSFRow leave_date = sheet2.createRow(col++);
                leave_date.createCell(1).setCellValue(rs12.get(r12++) + "      (FIRST HALF DAY)");*/
            }
            while (r16<rs16.size()) {
                sheet.getRow(col++).createCell(2).setCellValue(""+rs16.get(r16++)+ "      (SECOND HALF DAY)");
                /*HSSFRow leave_date = sheet2.createRow(col++);
                leave_date.createCell(1).setCellValue(rs16.get(r16++) + "      (SECOND HALF DAY)");*/
            }
            FileOutputStream fileOut = new FileOutputStream(filename);
            workbook.write(fileOut);
            fileOut.close();
            col = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...