dealfapiao
Version:
128 lines (116 loc) • 3.26 kB
JavaScript
const XLSX = require('xlsx')
const XLSXStyle = require('xlsx-style')
const fs = require('fs');
const pathPDF = process.cwd();
const arr = fs.readdirSync(pathPDF);
const newarr = arr.filter(e => {
return !e.includes('清单') && e.includes('pdf')
})
const defaultCellStyle = {
font: { name: "宋体", sz: 11, color: { auto: 1 } },
border: {
top: { style: 'thin' },
bottom: { style: 'thin' },
left: { style: 'thin' },
right: { style: 'thin' }
},
alignment: {
/// 自动换行
wrapText: 1,
// 居中
horizontal: "center",
vertical: "center",
indent: 0
}
}
const titleStyle = {
font: {
name: "宋体", sz: 24, bold: true,color: { rgb: "FFFFAA00" } },
border: {
top: { style: 'thin' },
bottom: { style: 'thin' },
left: { style: 'thin' },
right: { style: 'thin' }
},
alignment: {
horizontal: "center",
vertical: "center",
indent: 0
}
}
let tableData = newarr.map(e=>{
let reg = /[-|_|—]+/;
let list = e.split(reg);
let l = list.length;
let code = ''
let pingzheng = '';
let name = ''
let date = ''
let money = '';
if (l == 4) {
code = list[1];
name = list[3].split('.')[0];
money = list[2];
} else if (l == 3) {
pingzheng = list[0];
name = list[2].split('.')[0]
money = list[1]
}
return {
code,pingzheng,money,date,name
}
})
tableData.sort((a,b)=>a.name.localeCompare(b.name));
let table = tableData.map((e,i)=>{
return [
// i+1,
// e.code,
// e.pingzheng,
// e.name,
// e.date,
// e.money
{ v: i + 1, s: defaultCellStyle},
{ v: e.code, s: defaultCellStyle },
{ v: e.pingzheng, s: defaultCellStyle },
{ v: e.name, s: defaultCellStyle },
{ v: e.date, s: defaultCellStyle },
{ v: e.money, s: defaultCellStyle, t: "n"}
]
})
let arrHeader = ['序号','发票号码', '凭证号', '报销人', '报销日期', '发票金额'].map(e=>{
return {
v:e,
s: defaultCellStyle
}
})
table.unshift(arrHeader)
table.unshift([{
v: '北京华亿创新信息技术有限公司电子发票报销台账(2020年)',
s: titleStyle
}, { v: null, s: titleStyle }, { v: null, s: titleStyle }, { v: null, s: titleStyle }, { v: null, s: titleStyle }, { v: null, s: titleStyle }]);
//1、定义导出文件名称
var filename = "write.xlsx";
// 定义导出数据
var data = table
// 定义excel文档的名称
var ws_name = "2020年电子发票台账";
// 初始化一个excel文件
var wb = XLSX.utils.book_new();
// 初始化一个excel文档,此时需要传入数据
var ws = XLSX.utils.aoa_to_sheet(data);
ws['!merges'] = [
// 设置A1-C1的单元格合并
{ s: { r: 0, c: 0 }, e: { r: 0, c: 5 } }
];
ws['!cols'] = [
{ wch: 9 }, // 第一列
{ wch: 10 }, // 第二列
{ wch: 15 }, // 第三列
{ wch: 10 }, // 第二列
]
// 将文档插入文件并定义名称
XLSX.utils.book_append_sheet(wb, ws, ws_name);
// 执行下载
// XLSX.writeFile(wb, filename);
XLSXStyle.writeFile(wb, filename);