今天,税务开票的excel接口,出现变化, 提示"导入模板已更新,请下载最新的模板填写后重新上传",
分析了一下,发现新的模板,多了2个隐藏的工作表, 除了第一个"1-明细模板", 还有第二个"excelVersion",第三个"xzqhdm",
其中excelVersion工作表的A4单元,放了内容:"mx;20240605",
在2024-07-27这个文件又更新了, 内容变成了“mx;20240727”,
在2024-08-02这个文件又更新了,内容变回了"mx;20240605",估计是反对的人太多了,又改回去了,以后应该不会再改了。
第三个工作表的第一列, 放了2863个行政区划, 没啥作用, 我们只要添加第二个工作表即可,js代码如下:
<button id=xport>导出excel(20240605格式)</button>
<script type="module">
xport.addEventListener("click", async() => {
const XLSX = await import("https://cdn.sheetjs.com/xlsx-0.18.1/package/xlsx.mjs");
const response = await fetch("https://www.bjlx.org.cn/data.json");
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
const data1 = [['','','','','','','','','',''],['','','','','','','','','',''], ...data]; //前面要添加2行空行,否则找不到数据
const wb = XLSX.utils.book_new();
var ws = XLSX.utils.aoa_to_sheet(data1);
XLSX.utils.book_append_sheet(wb, ws, "1-明细模板");//第一个工作表,数据来自data.json文件
ws=XLSX.utils.aoa_to_sheet([['',''],['',''],['',''],['mx;20240605','']]);
XLSX.utils.book_append_sheet(wb, ws, "excelVersion");//第二个工作表, 数据是固定的格式
XLSX.writeFile(wb, "销售发票$_GET[id]开票信息.xlsx");
});
data.json:
[
["项目名称","商品和服务税收分类编码","规格型号","单位","商品数量","商品单价","金额","税率","折扣","优惠政策类型"],
["DPD总氯试剂包","1070214010000000000","2105669-CN","套","1","239.00","239.00",0.13,"",""],
["余氯试剂","1070214010000000000","2105569-CN","套","1","238.00","238.00",0.13,"",""]
]
另外, 新的模板, 对数据小数位数更严格了, 金额只能2位数字,税率的小数,后面不能带0