用什么代码可以把图表还原成一个数据的过程是什么(标签-Java|关键词-Java语言)

Java语言读取excle文件里的图表,并且还原成数据可以实现的么?用什么代码可以把图表还原成一个数据的过程是什么

这个和刚才的一样哈,需要下载使用 Apache POI 库才可以
示例代码

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Chartsheet;
import org.apache.poi.ss.usermodel.Chart;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.util.CellReference;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ExcelChartReader {
    public static void main(String[] args) {
        String filePath = "test.xlsx";
        
        try (FileInputStream fis = new FileInputStream(filePath);
             Workbook workbook = new XSSFWorkbook(fis)) {

            // 获取Chartsheet对象
            Chartsheet chartsheet = workbook.getSheetAt(0); // 假设图表在第一个Chartsheet中

            // 获取Chart对象
            Chart chart = chartsheet.getDrawingPatriarch().getCharts().get(0); // 假设只有一个图表

            // 获取图表数据范围
            DataRange dataRange = chart.getChartData().get(0).getSeries().get(0).getValues(); // 假设只有一个数据系列

            // 将数据范围还原为数据列表
            List<Double> dataList = extractDataFromDataRange(workbook, dataRange);

            // 输出数据列表
            for (Double data : dataList) {
                System.out.println(data);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 将数据范围还原为数据列表
    private static List<Double> extractDataFromDataRange(Workbook workbook, DataRange dataRange) {
        List<Double> dataList = new ArrayList<>();
        DataFormatter dataFormatter = new DataFormatter();

        for (CellReference cellRef : dataRange.getAllReferencedCells()) {
            Sheet sheet = cellRef.getSheetName() != null ? workbook.getSheet(cellRef.getSheetName()) : null;
            Row row = sheet != null ? sheet.getRow(cellRef.getRow()) : null;
            Cell cell = row != null ? row.getCell(cellRef.getCol()) : null;

            if (cell != null && cell.getCellType() == CellType.NUMERIC) {
                double value = cell.getNumericCellValue();
                dataList.add(value);
            } else if (cell != null && cell.getCellType() == CellType.STRING) {
                String value = dataFormatter.formatCellValue(cell);
                double numericValue = Double.parseDouble(value);
                dataList.add(numericValue);
            }
        }
        return dataList;
    }
}


  • 这篇博客: JAVA对excle创建、读取、设置单元格颜色、背景色、跨行跨列中的         设置字体 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •         Font font = wb.createFont();
            font.setColor((short)1);
            font.setBold(true);

            short值和颜色对应效果如图,来自POI4颜色名称,颜色汉语名称,颜色对应关系_lenovo96166的博客-CSDN博客

                     

  • 以下回答由chatgpt基于相关博客总结生成:

    由于参考资料提供的代码并没有直接涉及到读取Excel文件中的图表数据并还原为原始数据的功能,因此无法准确给出具体的解决方案和代码实现。但是,一般情况下,可以使用Apache POI库来读取和操作Excel文件。以下是一般的步骤和代码实现:

    1. 引入Apache POI库的依赖项。在你的项目中添加以下依赖项,以便使用Apache POI库来读取Excel文件。
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
    
    1. 使用Java代码打开并读取Excel文件。以下是一个简单的示例代码:
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class ExcelReader {
        public static void main(String[] args) {
            try (FileInputStream file = new FileInputStream("path/to/your/excel/file.xlsx");
                 Workbook workbook = new XSSFWorkbook(file)) {
    
                Sheet sheet = workbook.getSheetAt(0);
                for (Row row : sheet) {
                    for (Cell cell : row) {
                        // 处理每个单元格的数据
                        switch (cell.getCellType()) {
                            case STRING:
                                System.out.print(cell.getStringCellValue() + "\t");
                                break;
                            case NUMERIC:
                                System.out.print(cell.getNumericCellValue() + "\t");
                                break;
                            // 其他类型可以根据需要进行处理
                        }
                    }
                    System.out.println();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    替换"path/to/your/excel/file.xlsx"为你要操作的Excel文件的路径。

    1. 获取图表数据并还原为原始数据。根据Excel文件中图表的类型和结构,使用Apache POI库的相关类和方法来获取图表数据,并按照对应的逻辑进行还原处理。

    请注意,以上代码仅供参考,并且可能需要根据实际的Excel文件和需求进行调整和扩展。同时,Apache POI库提供了丰富的API和文档,有助于更深入地了解和使用它。

    如果以上的解决方案无法满足你的需求,建议进一步学习和研究Apache POI库的相关文档和示例,以及其他第三方库或工具,例如JFreeChart,来处理Excel文件中的图表数据。