чтение данных с веб-страницы и запись в Excel - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь прочитать данные с веб-страницы и записать в excel.in веб-страница содержит две таблицы, эти значения таблицы извлекаются и записываются в excel.when, извлекать и распечатывать все работает нормально. писать в Excel в последней строке, данные записываются только во все ячейки?

enter image description here enter image description here

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

пожалуйста, найдите и позвольте мне теперь что-то не так в этом коде ниже.

Document doc=Jsoup.parse(singleFile, "UTF-8", "http://example.com/");
Element table=doc.select("table").get(0);
Element tabl=doc.select("table").get(1);
    Elements rows1=tabl.select("tr");


    Node Avg = null;
    for(int i=1;i< rows1.size();i++){
            Element row1=rows1.get(i);
            Elements col=row1.select("td");

            String Name =col.get(0).text();
            Node Max=col.get(2).childNode(0);
            Avg=col.get(3).childNode(0);

     System.out.println("Name:"+Name+ ": Avg:"+Avg);        

    }    



        FileInputStream fis = new FileInputStream(new File("C:/Users/mramasa7/Desktop/metrics/GUX_BSL Metrics Data_JUN_2019.xlsx"));
        Workbook workbook = new XSSFWorkbook(fis);
        Sheet sheet = workbook.getSheetAt(0);



        Cell cell=null;

        cell=sheet.getRow(34).getCell(k);
        cell.setCellValue(Avg.toString());

1 Ответ

1 голос
/ 24 июня 2019

Насколько я понял, ваша проблема в том, что последнее значение в исходной таблице печатается в каждой ячейке таблицы Excel.

Кусок кода, который записывается в электронную таблицу, выглядит следующим образом:

cell.setCellValue(Avg.toString());

Вы не добавили этот фрагмент кода в цикл, который создает ячейки для каждой записи в вашем источнике данных. Вы должны заполнять строки по мере их создания. Используя пример Apache POI:

public byte[] export(List<String> exportList) throws Exception{

    Workbook workbook = new XSSFWorkbook();
    Sheet sheet = workbook.createSheet("Export");
    for(int i=0; i< exportList.size(); i++) {
        Row row = sheet.createRow(i);
        row.createCell(0)
                .setCellValue(exportList.get(i));
    }
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    workbook.write(bos);
    bos.close();
    return bos.toByteArray();
}

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

for(int i=0; i< sheet.getLastRowNum(); i++) {
        Row row = sheet.getRow(i);
        row.getCell(0)
                .setCellValue(exportList.get(i)); // Insert the number of the cell herer (column)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...