Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从网页读取数据并在excel中编写_Java_Spring_Hibernate - Fatal编程技术网

Java 从网页读取数据并在excel中编写

Java 从网页读取数据并在excel中编写,java,spring,hibernate,Java,Spring,Hibernate,我正在尝试从网页中读取数据并在excel中写入。在网页中包含两个表,这些表值将被提取并写入excel。提取并打印时,一切正常。但假设在excel中写入最后一行数据,只写入所有单元格 我认为它在中得到了覆盖,因为我在全局中声明了所需的数据。但是没有用,因为问题仍然存在 请找出下面代码中的任何错误并告诉我 Document doc=Jsoup.parse(singleFile, "UTF-8", "http://example.com/"); Element table=doc.select("t

我正在尝试从网页中读取数据并在excel中写入。在网页中包含两个表,这些表值将被提取并写入excel。提取并打印时,一切正常。但假设在excel中写入最后一行数据,只写入所有单元格

我认为它在中得到了覆盖,因为我在全局中声明了所需的数据。但是没有用,因为问题仍然存在

请找出下面代码中的任何错误并告诉我

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());

据我所知,您的问题是原始表上的最后一个值正在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 spreadhseet,您应该使用一个循环来遍历所有现有的行,并用所需的值填充它。例如:

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)
    }

你介意重写你的问题吗?我不明白你的意思。@GabrielPimenta请马上检查,我想,我尽可能用我理解的方式回答了。希望对你有帮助。如果对你有用,请告诉我。如果有,请将答案标记为已接受。您理解正确。但我正在现有excel工作表中写入数据。这意味着我正在更新excel工作表。请重新编辑。创建/更新电子表格的原则是相同的。只需找到要更改的单元格对象,然后按您喜欢的方式进行更改。它对您有用吗?请考虑将我的建议标记为正确的答案,以供将来参考。