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