1. 技术选型与核心原理
在实现 Excel 导出时选择了 exceljs,而不是 SheetJS(xlsx)等其他库,你基于哪些考量?exceljs 相比其他库在 “保留复杂表格格式与统计信息” 上有什么独特优势?请结合具体 API 举例说明。
2. 复杂表格格式导出的实现
项目中提到 “保留复杂表格格式”,假设原页面表格存在合并单元格、条件格式(如数值大于 100 标红)、自定义边框 / 底色,你是如何通过 exceljs 将这些格式映射到 Excel 中的?请描述关键实现步骤和可能遇到的兼容性问题(如不同 Excel 版本对格式的支持差异)。
3. 统计信息的动态计算与导出
导出 Excel 时需要保留 “统计信息”(如某列求和、平均值),这些统计信息是在前端计算后传入导出模块,还是通过 exceljs 的公式功能动态生成?两种方案各有什么优缺点?如果数据量很大(如 10 万行),你会如何选择并优化性能?
4. 导出模块的封装设计
你封装的 Excel 导出模块对外提供了怎样的 API 接口?如何保证模块的可扩展性(例如后续需要支持导出时自动生成目录、添加水印)?请举例说明模块的核心类 / 函数结构,以及你是如何处理 “复杂表格数据” 的通用化解析(如适配不同结构的数据源)。
5. Word 导出中的图表与富文本处理
使用 docxtemplater 结合 ImageModule 实现 Word 导出时,如何将页面中的 ECharts/Chart.js 图表转为图片插入 Word?请描述从图表截图到 Base64 处理、再到 docxtemplater 渲染的完整流程,以及解决 “图表模糊”“跨域图片” 问题的方案。
6. 富文本内容的格式兼容
项目支持 “富文本内容导出到 Word”,假设富文本中包含字体样式(加粗 / 颜色)、列表(有序 / 无序)、表格、链接等元素,你是如何将这些 HTML 格式转换为 docxtemplater 支持的 Word 格式的?是否遇到过格式丢失的情况?如何解决(如自定义转换器或使用额外插件)?
7. 大文件导出的性能优化
当导出数据量较大时(如 Excel 含 10 万行数据,Word 含 50 页带多图内容),可能出现前端卡顿甚至内存溢出,你在实现中做了哪些优化?例如:是否使用分批次处理、Web Worker 避免主线程阻塞、二进制流分片传输?请具体说明优化策略和效果数据。
8. 异常处理与容错机制
在导出过程中可能遇到各种错误:如数据源格式错误、浏览器不支持 Blob 下载、图片加载失败等。你的模块是如何捕获这些异常并给用户反馈的?是否实现了重试机制?对于 “部分数据导出失败” 的场景,你会如何设计降级方案?
9. 跨浏览器兼容性处理
不同浏览器(如 Chrome、Safari、IE11)在处理文件导出时存在差异(如 IE 不支持 URL.createObjectURL),你是如何适配这些差异的?特别是在导出大文件时,各浏览器的性能表现有何不同?如何针对性优化?
10. 需求拓展与技术演进
如果后续需要支持 “Excel 导入并还原为页面表格(含格式)”“Word 模板动态填充后在线预览”,你会如何基于现有技术栈扩展?可能会引入哪些新的库或工具?从架构设计角度,如何保证导入 / 导出 / 预览功能的一致性和可维护性?