爪洼大兄弟 2023-09-05 15:36 采纳率: 0%
浏览 105

luckyexcel导入本地xlsx文件进行在线预览功能,不显示xlsx文件中的图表

我使用luckyexcel导入本地xlsx文件进行在线预览功能,不显示xlsx文件中的图表
没有报错

LuckyFile.prototype.getSheetsFull = function(isInitialCell) {
                    if (isInitialCell === void 0) {
                        isInitialCell = true;
                    }

                    var sheets = this.readXml.getElementsByTagName("sheets/sheet", constant_1.workBookFile);
                    var sheetList = {};

                    for (var key in sheets) {
                        var sheet = sheets[key];
                        sheetList[sheet.attributeList.name] = sheet.attributeList["sheetId"];
                    }

                    this.sheets = [];
                    var order = 0;

                    for (var key in sheets) {
                        var sheet = sheets[key];
                        var sheetName = sheet.attributeList.name;
                        var sheetId = sheet.attributeList["sheetId"];
                        var rid = sheet.attributeList["r:id"];
                        var sheetFile = this.getSheetFileBysheetId(rid);

                        var hide = sheet.attributeList.state === "hidden" ? 1 : 0;
                        var drawing = this.readXml.getElementsByTagName("worksheet/drawing", sheetFile)
                          , drawingFile = void 0
                          , drawingRelsFile = void 0;
                       // console.info(drawing)
                        if (drawing != null && drawing.length > 0) {
                            var attrList = drawing[0].attributeList;
                            var rid_1 = method_1.getXmlAttibute(attrList, "r:id", null);

                            if (rid_1 != null) {
                                drawingFile = this.getDrawingFile(rid_1, sheetFile);
                                drawingRelsFile = this.getDrawingRelsFile(drawingFile);
                            }
                        }

                        if (sheetFile != null) {
                            var sheet_1 = new LuckySheet_1.LuckySheet(sheetName,sheetId,order,isInitialCell,{
                                sheetFile: sheetFile,
                                readXml: this.readXml,
                                sheetList: sheetList,
                                styles: this.styles,
                                sharedStrings: this.sharedStrings,
                                calcChain: this.calcChain,
                                imageList: this.imageList,
                                drawingFile: drawingFile,
                                drawingRelsFile: drawingRelsFile,
                                hide: hide
                            });
                            this.columnWidthSet = [];
                            this.rowHeightSet = [];
                            this.imagePositionCaculation(sheet_1);
                            this.sheets.push(sheet_1);
                            order++;
                        }
                    }
                }
                ;

我怀疑是因为xlsx文件中的chart文件夹内的内容没有被解析到

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-05 19:38
    关注

    【以下回答由 GPT 生成】

    问题原因:根据代码片段的描述,可以看到在获取sheet信息的过程中,并没有对图表进行处理,导致最终在线预览时无法显示图表。

    解决方案: 1. 确保使用的luckyexcel库版本支持读取并处理图表数据。如果当前版本不支持,需要升级到最新版本或切换到其他支持图表读取的库。 2. 在获取sheet信息的循环中,针对每个sheet,判断是否存在图表数据,如果存在则需要对图表数据进行处理。 3. 根据代码片段中的逻辑,可以发现需要根据sheet的drawing相关信息,来获取图表的数据和关系文件,并进行处理。

    代码示例:

    // 在获取sheet信息的循环中添加对图表数据的处理
    for (var key in sheets) {
        // ...省略其他代码...
    
        if (drawing !== null && drawing.length > 0) {
            // 处理图表数据
            var attrList = drawing[0].attributeList;
            var rid_1 = method_1.getXmlAttibute(attrList, "r:id", null);
    
            if (rid_1 !== null) {
                drawingFile = this.getDrawingFile(rid_1, sheetFile);
                drawingRelsFile = this.getDrawingRelsFile(drawingFile);
    
                // 处理图表数据和关系文件
                var chartData = this.processChartData(drawingFile);
                var chartRelsData = this.processChartRelsData(drawingRelsFile);
    
                // 将图表数据存储到对应的sheet信息中,以供后续处理和显示
                sheetData.chartData = chartData;
                sheetData.chartRelsData = chartRelsData;
            }
        }
    }
    
    // 处理图表数据的函数示例
    LuckyFile.prototype.processChartData = function(drawingFile) {
        // 根据drawingFile中的数据来处理图表数据,具体实现略
    
        // 返回处理后的图表数据
        return processedChartData;
    }
    
    // 处理图表关系数据的函数示例
    LuckyFile.prototype.processChartRelsData = function(drawingRelsFile) {
        // 根据drawingRelsFile中的数据来处理图表关系数据,具体实现略
    
        // 返回处理后的图表关系数据
        return processedChartRelsData;
    }
    

    以上代码示例仅为参考,实际处理过程中需要根据具体需求和数据结构进行调整和实现。同时,需要注意处理图表数据和关系数据的方式和格式,以保证后续能够正确显示图表。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月5日

悬赏问题

  • ¥40 微信小程序 使用vant组件ActionSheet 下拉面板,内容区域滚动会触发。scroll-view自定义下拉刷!即使设置停止下拉刷新也不行。
  • ¥15 专业问题提问,7月5号2点之前
  • ¥25 使用cube ai 导入onnx模型时报错
  • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
  • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
  • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
  • ¥15 使用华为ENSP软件模拟实现该实验拓扑
  • ¥15 通过程序读取主板上报税口的数据
  • ¥15 matlab修改为并行
  • ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373