const cloud = require('wx-server-sdk')
cloud.init({
env: '隐藏'
})
const db = cloud.database()
const ExcelJS = require('exceljs');
const superagent = require('superagent');
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const dataList = await db.collection('priceList').get()
const data = dataList.data
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('Sheet 1');
worksheet.properties.defaultRowHeight = 75;
worksheet.properties.defaultColWidth = 12;
worksheet.getRow(1).alignment = {
vertical: 'middle',
horizontal: 'center'
};
worksheet.getRow(1).font = {
size: 16,
bold: true
};
worksheet.columns = [{
header: '日期',
key: 'id'
}, {
header: '收支',
key: 'url'
}, {
header: '收支类型',
key: 'url'
}, {
header: '账户',
key: 'url'
}, {
header: '金额',
key: 'url'
}, {
header: '项目',
key: 'url'
}, {
header: '经办人',
key: 'url'
}, {
header: '联系电话',
key: 'url'
}, {
header: '备注',
key: 'url'
}, {
header: '发票图片',
key: 'url'
}];
for (let rowIndex in data) {
const rowcontent = []
var urls = encodeURI('https://6465-dev-4gxhzi23098ff1be-1301122876.tcb.qcloud.la/problemFileList/1739515736882.png?sign=ecb9b281e9168a0a6beac76775165f22&t=1739717943' + '/sf200')
const img2Base64 = await new Promise(async function (resolve, reject) {
const url = urls;
await superagent.get(url).buffer(true).parse((res) => {
let buffer = [];
res.on('data', (chunk) => {
buffer.push(chunk);
});
res.on('end', () => {
const data = Buffer.concat(buffer);
const base64Img = data.toString('base64');
resolve('data:image/png;base64,' + base64Img)
});
});
})
worksheet.getRow(rowIndex - 1 + 3).alignment = {
vertical: 'middle',
horizontal: 'center'
};
const imageId2 = workbook.addImage({
base64: img2Base64,
extension: 'png',
});
worksheet.addImage(imageId2, {
tl: {
col: 9,
row: rowIndex - 1 + 2
},
ext: {
width: 100,
height: 100
},
editAs: 'undefined'
});
rowcontent.push(data[rowIndex].timeYMD);
rowcontent.push(data[rowIndex].selectA);
rowcontent.push(data[rowIndex].selectB);
rowcontent.push(data[rowIndex].selectC);
rowcontent.push(data[rowIndex].moneyBind);
rowcontent.push(data[rowIndex].xiangmu);
rowcontent.push(data[rowIndex].user);
rowcontent.push(data[rowIndex].phone);
rowcontent.push(data[rowIndex].problemInput);
worksheet.addRow(rowcontent);
}
const buffer = await workbook.xlsx.writeBuffer();
return await cloud.uploadFile({
cloudPath: 'nhb/' + Date.now() + '.xlsx',
fileContent: buffer,
})
}
