nodejs结合xlsx插件读写excel,写入文件后比原文件大10倍左右
前提条件
有一个压缩后的文件需要传给PHP,但是PHP无法读取。
目前想通过nodejs重新写入一份文件,再传给php
问题分析
nodejs结合xlsx插件可以把数据写入excel。但是有两个问题
第一: compression: false不压缩写入文件,写入后的文件是源文件的10倍左右的大小。
第二: compression: true压缩写入文件,PHP依旧无法读取(pass)
以下是文件写入代码
const XLSX = require('xlsx')
const fs = require('fs')
const filePath = './20191015_offres_64711.xlsx'
const outPath = './test.xlsx'
const data = fs.readFileSync(filePath)
const workbook = XLSX.read(data, {
type: 'buffer'
})
const xlsx_data = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]])
const ws = XLSX.utils.json_to_sheet(xlsx_data)
const wb = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(wb, ws)
XLSX.writeFile(wb, outPath, {
compression: false, // 为true时会压缩文件
bookSST: true,
bookType: 'xlsx'
})
以下是写入后未做任何操作时,文件该有的样子。(注:test.xlsx文件比源文件大10倍左右)。此时test.xslx后台PHP是可以读取的,但是文件莫名的扩大了10倍。
有一个很神奇的操作。当我分别打开这两个文件,然后ctr+s之后,PHP就可以读取源文件,也可以读取新写入的文件,以下是保存后的文件大小
上图中的test.xlsx后台PHP也是可以读取的,而且这个文件大小是正常的文件大小。(注:必须手动打开文件,并保存文件)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
与node-xlsx没关系,与你php读取程序相关
下面是用你的node代码生成,只是改了下生成的文件名,
source.xlsx内容
php读取代码
输出
各位大佬都没遇到类似的问题吗
我用的node-xlsx,也碰到了类似的问题。求大佬解惑