ApachePOI метод для написания ячеек в Excel - PullRequest
0 голосов
/ 29 марта 2020

Я пытался придумать класс excelWriter, который сможет записать ячейку в файл excel с учетом столбца и строки. Это оказывается намного сложнее, чем предполагалось. Я планирую делать это каждый раз, когда вызывается метод write(), он копирует то, что уже находится в строке (используя разработанный мной класс ExcelReader), а затем добавляет новый элемент в строку и, наконец, записывает его в Excel. лист. Я могу только предположить, что моя ошибка заключается в сохранении старой информации из-за того, что печатаются только определенные биты нужных строк.

public void write(int sheet,int row, int col, String data) throws IOException {

        //update number of columns if it has grown
        if(col>maxCol) {
            maxCol=col;
        }

        //get sheet
        XSSFSheet tempSheet=sheets.get(sheet);

        // Specific row number 
        XSSFRow newRow = tempSheet.createRow(row-1); 

        //excel reader to get existing cells in row
        ExcelReader reader=new ExcelReader(outputFile);

        String[] oldCells=new String[maxCol];

        if(reader.read(sheet, row, 1)!="DNE") {
            //get old cells int array
            for(int i=1;i<maxCol;i++) {
                oldCells[i-1]=reader.read(sheet, row, i);
            }
        }

        //fill in new cell
                oldCells[col-1]=data;

        //test print
        for(int i=0;i<maxCol;i++) {
            System.out.print(oldCells[i]+" ");
        }
        System.out.println("\n");


        //fill row
        for(int i=0;i<maxCol;i++) {
             XSSFCell tempCell=newRow.createCell(i);
             tempCell.setCellValue(oldCells[i]);

        }  

    }
public static void main(String[] args) {

        ExcelWriter writer=null;

        try {
            //new excel writer
            writer=new ExcelWriter("/home/olee/git/team5-ftta/SampleFiles/testWorkbook.xlsx");
            //new writer
            writer.newSheet("yuh");

        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
        //write
        writer.write(0, 1, 1, "one");
        writer.write(0, 1, 2, "two");
        writer.write(0, 1, 3, "three");
        writer.write(0, 3, 2, "four");
        writer.write(0, 4, 4, "five");

            //complete write
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

Это приводит к выводу листа Excel с (row, col) -> один в ячейке (1,2), два не записаны, три в ячейке (1,3), четыре в ячейке (3,2), пять в ячейке (4,4)

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