react使用xlsx 导出table内容中的图标
时间: 2024-02-26 17:58:51 浏览: 62
要在React中使用`xlsx`库将包含图标的table内容导出Excel文件,您可以先使用`table_to_sheet`方法将HTML表格转换为工作表,然后使用`sheet_add_aoa`方法在工作表中添加图标。以下是一个示例代码:
```javascript
import XLSX from 'xlsx';
import FileSaver from 'file-saver';
// 创建一个工作簿
const workbook = XLSX.utils.book_new();
// 创建一个工作表
const worksheet = XLSX.utils.table_to_sheet(document.getElementById('table'));
// 获取表格中包含图标的单元格
const cellsWithIcon = document.querySelectorAll('.cell-with-icon');
// 在工作表中添加图标
cellsWithIcon.forEach((cell) => {
const { row, col } = cell.dataset;
XLSX.utils.sheet_add_aoa(worksheet, [[{ t: 's', v: cell.innerText, s: { fill: { fgColor: { rgb: 'FF0000FF' } } } }]], {
origin: `B${row}`,
});
});
// 添加工作表到工作簿
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
// 将工作簿转换为二进制文件
const excelFile = XLSX.write(workbook, { bookType: 'xlsx', type: 'binary' });
// 保存文件
const buffer = new ArrayBuffer(excelFile.length);
const view = new Uint8Array(buffer);
for (let i = 0; i < excelFile.length; ++i) {
view[i] = excelFile.charCodeAt(i) & 0xff;
}
const blob = new Blob([buffer], { type: 'application/octet-stream' });
FileSaver.saveAs(blob, 'file_with_icon.xlsx');
```
在上述代码中,我们首先使用`table_to_sheet`方法将HTML表格转换为工作表。然后,我们使用`querySelectorAll`方法获取包含图标的单元格,并使用`sheet_add_aoa`方法在工作表中添加一个包含图标的数组。请注意,我们使用了`t: 's'`来表示这是一个字符串类型的单元格,并使用`s: { fill: { fgColor: { rgb: 'FF0000FF' } } }`来设置单元格的背景颜色。
希望这可以帮助您实现在Excel中添加图标的功能。
阅读全文