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文件夹内的内容没有被解析到

【以下回答由 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;
}

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


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