
为什么要用xlsx?
现在前端可惨,许多事都要做了。。。。读取excel的数据,抛弃了以前的上传一个excel文件到后台解析,直接改用了前端读取excel中的数据转成一个数组对象转数据给后台,那没办法,搞吧
安装
1 | npm i xlsx -S |
读取数据
1 | XLSX.read(ArrayBuffer,配置项) |
ArrayBuffer如何来? 参考以下链接: 参考链接:https://zhuanlan.zhihu.com/p/354707440
JS 文件base64、File、Blob、ArrayBuffer互转
1. file对象转base64
1 | let reader = new FileReader(); |
2. base64 转成blob 上传
1 | function dataURItoBlob(dataURI) { |
3. blob 转成ArrayBuffer
1 | let blob = new Blob([1,2,3,4]) |
4. buffer 转成blob
1 | let blob = new Blob([buffer]) |
5. base64 转 file
1 | const base64ConvertFile = function (urlData, filename) { // 64转file |
6. 文件转ArrayBuffer
1 | function toBuffer(file, func) { |
文件转ArrayBuffer? 一个一个转吧
1 | const xlsx = require('xlsx'); |
写入数据
1 | function downloadExcel() { |
参考链接:https://www.npmjs.com/package/xlsx
有样式
官方文档请参考: https://www.npmjs.com/package/xlsx-style
参考网址: https://blog.csdn.net/Yuoliku/article/details/109214337
安装xlsx-style
1 | npm i xlsx-style -S |
修改xlsx-style源码报错
1 | 在\node_modules\xlsx-style\dist\cpexcel.js |
配置参考代码
参考网站:https://blog.csdn.net/qq_42440043/article/details/121974854
常用样式配置
Style Attribute | Sub Attributes | Values |
---|---|---|
fill | patternType | "solid" or "none" |
fgColor | COLOR_SPEC |
|
bgColor | COLOR_SPEC |
|
font | name | "Calibri" // default |
sz | "11" // font size in points |
|
color | COLOR_SPEC |
|
bold | `true | |
underline | `true | |
italic | `true | |
strike | `true | |
outline | `true | |
shadow | `true | |
vertAlign | `true | |
numFmt | "0" // integer index to built in formats, see StyleBuilder.SSF property |
|
"0.00%" // string matching a built-in format, see StyleBuilder.SSF |
||
"0.0%" // string specifying a custom format |
||
"0.00%;\\(0.00%\\);\\-;@" // string specifying a custom format, escaping special characters |
||
"m/dd/yy" // string a date format using Excel’s format notation |
||
alignment | vertical | `”bottom” |
horizontal | `”bottom” | |
wrapText | `true | |
readingOrder | 2 // for right-to-left |
|
textRotation | Number from 0 to 180 or 255 (default is 0 ) |
|
90 is rotated up 90 degrees |
||
45 is rotated up 45 degrees |
||
135 is rotated down 45 degrees |
||
180 is rotated down 180 degrees |
||
255 is special, aligned vertically |
||
border | top | { style: BORDER_STYLE, color: COLOR_SPEC } |
bottom | { style: BORDER_STYLE, color: COLOR_SPEC } |
|
left | { style: BORDER_STYLE, color: COLOR_SPEC } |
|
right | { style: BORDER_STYLE, color: COLOR_SPEC } |
|
diagonal | { style: BORDER_STYLE, color: COLOR_SPEC } |
|
diagonalUp | `true | |
diagonalDown | `true |
合并单元格时,如A1-C1合并成一个单元格时,只需要对A1设置样式即可
1 | <button @click="downloadExcel">下载</button> |
给每个单元格添加样式
1 | for (const i in ws) { |
多个sheet
1 | handleExport = () => { |
读取多个sheet
1 | const workbook = xlsx.read(array); //workbook就是xls文档对象 |
单独设置某个单元格
你可以使用 xlsx-style
库中的 utils.cell_set_style
方法来单独设置某个单元格的样式。该方法接受一个工作表对象、单元格地址和样式对象作为参数,可以将指定单元格的样式设置为指定的样式对象。
例如,下面的代码演示了如何在 xlsx-style
中单独设置某个单元格的样式:
1 | javascript复制const XLSX = require('xlsx-style'); |
在上面的代码中,我们使用 utils.cell_set_style
方法将单元格 A1
的样式设置为一个包含字体加粗和红色填充颜色的样式对象。我们首先访问单元格 A1
,然后将其 s
属性设置为样式对象。
需要注意的是,utils.cell_set_style
方法只能用于单独设置某个单元格的样式。如果你需要设置多个单元格的样式,你可以使用 utils.sheet_set_range_style
方法。
希望这个例子能够帮助你在 xlsx-style
中单独设置某个单元格的样式。
单独为某个单元格设置样式
你可以使用 xlsx-style
库中的 utils.cell_set_style
方法来单独设置某个单元格的样式。该方法接受一个工作表对象、单元格地址和样式对象作为参数,可以将指定单元格的样式设置为指定的样式对象。
例如,下面的代码演示了如何在 xlsx-style
中单独设置某个单元格的样式:
1 | javascript复制const XLSX = require('xlsx-style'); |
在上面的代码中,我们使用 utils.cell_set_style
方法将单元格 A1
的样式设置为一个包含字体加粗和红色填充颜色的样式对象。我们首先访问单元格 A1
,然后将其 s
属性设置为样式对象。
需要注意的是,utils.cell_set_style
方法只能用于单独设置某个单元格的样式。如果你需要设置多个单元格的样式,你可以使用 utils.sheet_set_range_style
方法。
希望这个例子能够帮助你在 xlsx-style
中单独设置某个单元格的样式。
请注意 表头为合并单元格的情况,需要先设置了单元格内容,才能拿到ws[i].s
NOde.js生成excel文件
在 Node.js 环境中使用 xlsx.js
库生成 Excel 文件,可以使用 fs
模块将生成的 Excel 文件写入到本地文件系统中。以下是一个简单的例子:
1 | javascript复制const XLSX = require('xlsx'); |
在上面的代码中,我们首先创建了一个工作簿和一个工作表,并将工作表添加到工作簿中。然后,我们使用 XLSX.write
方法将工作簿转换为二进制数据,并将其写入到本地文件系统中。
需要注意的是,XLSX.write
方法的第一个参数是工作簿对象,第二个参数是一个选项对象,用于指定输出的格式和类型。在本例中,我们将输出格式设置为二进制数据,输出类型设置为 xlsx。
希望这个例子能够帮助你在 Node.js 环境中使用 xlsx.js
库生成 Excel 文件。
读取xlsx文件
在 Node.js 环境中使用 xlsx.js
库读取本地 Excel 文件,可以使用 fs
模块将 Excel 文件读取到内存中,然后使用 XLSX
库将其解析为工作簿对象。以下是一个简单的例子:
1 | javascript复制const XLSX = require('xlsx'); |
需要注意的是,XLSX.read
方法的第一个参数是一个二进制数据,第二个参数是一个选项对象,用于指定输入的格式和类型。在本例中,我们将输入格式设置为二进制数据,输入类型设置为自动检测。
希望这个例子能够帮助你在 Node.js 环境中使用 xlsx.js
库读取本地 Excel 文件
常见问题
jszip 不是构造函数
当我使用“xlsx”:“^0.15.6”时,TypeError: jszip is not a constructor at zip_read (xlsx.js:2867) at read_zip (xlsx.js:20706) at Object.readSync [as read] (xlsx.js:20773) at FileReader.fileReader.onload (import.js:80)
使用“import * as XLSX from ‘xlsx’”来导入 xlsx
我该如何修复它?
解答:
1 | const NodePolyfillPlugin = require("node-polyfill-webpack-plugin") |
https://github.com/SheetJS/sheetjs/issues/1879
vue引入xlsx-style一直报错找不到“fs”
1 | Module not found: |
解答
在vue.config.js中配置
1 | configureWebpack: { |
- 本文标题:xlsx.js的使用
- 本文作者:邵预鸿
- 创建时间:2022-05-16 16:52:26
- 本文链接:/images/logo.jpg2022/05/16/xlsx-js的使用/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!