当前位置: 首页 > news >正文

温州市城乡建设厅网站wordpress手机版侧栏导航栏

温州市城乡建设厅网站,wordpress手机版侧栏导航栏,适应 分辨率 网站,制作图片工具原生js用Export2Excel导出excel单级表头和多级表头数据方式实现 原生js用Export2Excel导出excel单级表头和多级表头数据方式实现HTML文件导入需要的文件HTML文件中实现导出函数HTML总代码实现汇总#xff08;直接复制代码#xff0c;注意js引入路径#xff09; 原生js用Expo… 原生js用Export2Excel导出excel单级表头和多级表头数据方式实现 原生js用Export2Excel导出excel单级表头和多级表头数据方式实现HTML文件导入需要的文件HTML文件中实现导出函数HTML总代码实现汇总直接复制代码注意js引入路径 原生js用Export2Excel导出excel单级表头和多级表头数据方式实现 因为项目框架的原因不是使用纯vue开发的所以用不了import的方式导入 file-saver 和 xlsx 的三方插件包去实现索性我就把这两个文件下载本地然后在HTML使用 script 标签的方式来实现。下面是具体实现方式 HTML文件导入需要的文件 1、新建文件夹 命名为js把对应的js文件放到里面在js文件同级新建个表格导出.html 文件 2、这里我用到了三个文件FileSaver.min.js、xlsx.full.min.js、Export2Excel.js 3、注意其中的Export2Excel.js 是需要自己写的其他两个文件去对应的GitHub地址下载即可如果找不到可以评论区聊我我看到可以私发你这个Export2Excel.js 文件代码我粘贴在文章里面直接复制使用如下 /* eslint-disable */ // 注意html中script js不能直接使用import方式导入文件 需要把这两个js文件下载后通过script方式加载进去 // import { saveAs } from file-saver // import XLSX from xlsxfunction generateArray(table) {var out []var rows table.querySelectorAll(tr)var ranges []for (var R 0; R rows.length; R) {var outRow []var row rows[R]var columns row.querySelectorAll(td)for (var C 0; C columns.length; C) {var cell columns[C]var colspan cell.getAttribute(colspan)var rowspan cell.getAttribute(rowspan)var cellValue cell.innerTextif (cellValue ! cellValue cellValue) cellValue cellValue//Skip rangesranges.forEach(function (range) {if (R range.s.r R range.e.r outRow.length range.s.c outRow.length range.e.c) {for (var i 0; i range.e.c - range.s.c; i) outRow.push(null)}})//Handle Row Spanif (rowspan || colspan) {rowspan rowspan || 1colspan colspan || 1ranges.push({s: {r: R,c: outRow.length},e: {r: R rowspan - 1,c: outRow.length colspan - 1}})};//Handle ValueoutRow.push(cellValue ! ? cellValue : null)//Handle Colspanif (colspan)for (var k 0; k colspan - 1; k) outRow.push(null)}out.push(outRow)}return [out, ranges] };function datenum(v, date1904) {if (date1904) v 1462var epoch Date.parse(v)return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000) }function sheet_from_array_of_arrays(data, opts) {var ws {}var range {s: {c: 10000000,r: 10000000},e: {c: 0,r: 0}}for (var R 0; R ! data.length; R) {for (var C 0; C ! data[R].length; C) {if (range.s.r R) range.s.r Rif (range.s.c C) range.s.c Cif (range.e.r R) range.e.r Rif (range.e.c C) range.e.c Cvar cell {v: data[R][C]}if (cell.v null) continuevar cell_ref XLSX.utils.encode_cell({c: C,r: R})if (typeof cell.v number) cell.t nelse if (typeof cell.v boolean) cell.t belse if (cell.v instanceof Date) {cell.t ncell.z XLSX.SSF._table[14]cell.v datenum(cell.v)} else cell.t sws[cell_ref] cell}}if (range.s.c 10000000) ws[!ref] XLSX.utils.encode_range(range)return ws }function Workbook() {if (!(this instanceof Workbook)) return new Workbook()this.SheetNames []this.Sheets {} }function s2ab(s) {var buf new ArrayBuffer(s.length)var view new Uint8Array(buf)for (var i 0; i ! s.length; i) view[i] s.charCodeAt(i) 0xFFreturn buf }function export_table_to_excel(id) {var theTable document.getElementById(id)var oo generateArray(theTable)var ranges oo[1]/* original data */var data oo[0]var ws_name SheetJSvar wb new Workbook(),ws sheet_from_array_of_arrays(data)/* add ranges to worksheet */// ws[!cols] [apple, banan];ws[!merges] ranges/* add worksheet to workbook */wb.SheetNames.push(ws_name)wb.Sheets[ws_name] wsvar wbout XLSX.write(wb, {bookType: xlsx,bookSST: false,type: binary})saveAs(new Blob([s2ab(wbout)], {type: application/octet-stream}), test.xlsx) }function export_json_to_excel({multiHeader [],header,data,filename,merges [],autoWidth true,bookType xlsx } {}) {/* original data */filename filename || excel-listdata [...data]data.unshift(header)for (let i multiHeader.length - 1; i -1; i--) {data.unshift(multiHeader[i])}var ws_name SheetJSvar wb new Workbook(),ws sheet_from_array_of_arrays(data)if (merges.length 0) {if (!ws[!merges]) ws[!merges] []merges.forEach(item {ws[!merges].push(XLSX.utils.decode_range(item))})}if (autoWidth) {/*设置worksheet每列的最大宽度*/const colWidth data.map(row row.map(val {/*先判断是否为null/undefined*/if (val null) {return {wch: 10}}/*再判断是否为中文*/else if (val.toString().charCodeAt(0) 255) {return {wch: val.toString().length * 2}} else {return {wch: val.toString().length}}}))/*以第一行为初始值*/let result colWidth[0]for (let i 1; i colWidth.length; i) {for (let j 0; j colWidth[i].length; j) {if (result[j][wch] colWidth[i][j][wch]) {result[j][wch] colWidth[i][j][wch]}}}ws[!cols] result}/* add worksheet to workbook */wb.SheetNames.push(ws_name)wb.Sheets[ws_name] wsvar wbout XLSX.write(wb, {bookType: bookType,bookSST: false,type: binary})saveAs(new Blob([s2ab(wbout)], {type: application/octet-stream}), ${filename}.${bookType}) } HTML文件中实现导出函数 scriptconsole.log(XLSX) // 打印看看 XLSXconsole.log(FileSaver) // 打印看看 FileSaverconsole.log(export_json_to_excel) // 打印看看export_json_to_excel 方法function downLoad() {let arr [{sno: 1000,username: fqniu,gender: 男,age: 27,card: 4****************7}, {sno: 1001,username: fqniu1,gender: 男,age: 27,card: 4****************8},{sno: 1002,username: fqniu2,gender: 男,age: 27,card: 4****************9}]// 单级表格const tHeader [编号, 姓名, 性别, 年龄, 身份证号]const filterVal [sno, username, gender, age, card]const list arrconst data formatJson(filterVal, list)export_json_to_excel({header: tHeader,data,filename: 单级表格,autoWidth: true,bookType: xlsx,})}// 多级表头function downLoad1() {let arr1 [{date: 2024-08-17,num1: 1,count1: 10,num2: 11,count2: 100,num3: 111,count3: 1000,total: 1110,},{date: 2024-08-18,num1: 2,count1: 20,num2: 22,count2: 200,num3: 222,count3: 2000,total: 2220,},{date: 2024-08-19,num1: 3,count1: 30,num2: 33,count2: 300,num3: 333,count3: 3000,total: 3330,}]let filterVal1 [date, num1, count1, num2, count2, num3, count3, total]const data1 formatJson(filterVal1, arr1)export_json_to_excel({multiHeader: [[日期, 上期结存, , 本期结存, , 下期结存, , 总数]],header: [, 数量, 金额, 数量, 金额, 数量, 金额, ], //表头 必填data: data1, //具体数据 必填filename: 多级表头的表格,// 要合并的单元格merges: [A1:A2, B1:C1, D1:E1, F1:G1, H1:H2],autoWidth: true,bookType: xlsx,})}function formatJson(filterVal, jsonData) {return jsonData.map((v) filterVal.map((j) {if (j timestamp) {return parseTime(v[j])} else {return v[j]}}))}/script导出的Excel文件内容截图如下 单级表头效果 多级级表头效果 注意点 导出多级表头首先要理解单元格合并规则 日期 所占单元格为 A1:A3 配送信息 所占单元格为 B1:F1 姓名 所占单元格为 B2:B3 然后依次类推即可 注图片引用网络仅用于学习分享 HTML总代码实现汇总直接复制代码注意js引入路径 !DOCTYPE html html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /headbodyscript src./js/FileSaver.min.js/scriptscript src./js/xlsx.full.min.js/scriptscript src./js/Export2Excel.js/scriptscriptconsole.log(XLSX)console.log(FileSaver)console.log(export_json_to_excel)function downLoad() {let arr [{sno: 1000,username: fqniu,gender: 男,age: 27,card: 4****************7}, {sno: 1001,username: fqniu1,gender: 男,age: 27,card: 4****************8},{sno: 1002,username: fqniu2,gender: 男,age: 27,card: 4****************9}]// 单级表格const tHeader [编号, 姓名, 性别, 年龄, 身份证号]const filterVal [sno, username, gender, age, card]const list arrconst data formatJson(filterVal, list)export_json_to_excel({header: tHeader,data,filename: 单级表格,autoWidth: true,bookType: xlsx,})}// 多级表头function downLoad1() {let arr1 [{date: 2024-08-17,num1: 1,count1: 10,num2: 11,count2: 100,num3: 111,count3: 1000,total: 1110,},{date: 2024-08-18,num1: 2,count1: 20,num2: 22,count2: 200,num3: 222,count3: 2000,total: 2220,},{date: 2024-08-19,num1: 3,count1: 30,num2: 33,count2: 300,num3: 333,count3: 3000,total: 3330,}]let filterVal1 [date, num1, count1, num2, count2, num3, count3, total]const data1 formatJson(filterVal1, arr1)export_json_to_excel({multiHeader: [[日期, 上期结存, , 本期结存, , 下期结存, , 总数]],header: [, 数量, 金额, 数量, 金额, 数量, 金额, ], //表头 必填data: data1, //具体数据 必填filename: 多级表头的表格,// 要合并的单元格merges: [A1:A2, B1:C1, D1:E1, F1:G1, H1:H2],autoWidth: true,bookType: xlsx,})}function formatJson(filterVal, jsonData) {return jsonData.map((v) filterVal.map((j) {if (j timestamp) {return parseTime(v[j])} else {return v[j]}}))}/scriptdiv idbox点击下载单级表格/divdiv idbox1点击下载多级表格/divscriptlet box document.getElementById(box)box.onclick () {downLoad()}let box1 document.getElementById(box1)box1.onclick () {downLoad1()}/script/body /html以上就是我使用原生js用Export2Excel导出excel单级表头和多级表头数据方式实现的方式内容比较简单代码功能单一仅限于导出个Excel内容文件如果复杂功能可能需要进一步研究谢谢
http://www.dnsts.com.cn/news/128028.html

相关文章:

  • 网站建设需要待摊吗网站建设费 科目
  • 电子商务网站软件建设的核心是网页设计实验报告心得和总结500字
  • 百度做网站免费电商设计师发展前景
  • 网站推广渠道及特点中国金融互联网协会官网
  • 网站开发与编程东莞阳光网站建设成效
  • 企业官网网站建设媒体营销
  • 开发网站如何选需要注意什么怎么用editplus做网站
  • 手机免费制作网站宜兴百度推广公司
  • 网站建设项目明细表网站流量统计工具有哪些
  • 海南网站开发找人做logo网站
  • 做网站的费用记哪个会计科目用asp.net做的网站实例
  • 专门做网站需要敲代码么无线网的网址是多少
  • 小型企业网站开发法人一证通主副证书管理新流程
  • 做照片的ppt模板下载网站深圳广告公司名录
  • 昆山兼职做网站一家专门做房产特卖的网站
  • 如何是网站排名上升网络科技有限公司英文
  • 个人网站效果社交电商是什么
  • 湖南省做网站那个企业便宜南阳网站网站建设
  • 站长工具查询入口wordpress去除分类
  • 怎样做企业手机网站广州推广策划公司
  • 网站建设太金手指六六十wordpress卸载 数据库
  • 门户网站建设关键点钱包网站建设
  • 一个网站用多个域名云南建设网站首页
  • 网站长尾词挖掘合肥网站营销
  • 静态网站开发实训的目的企业展厅设计比较好的公司
  • 网站备案授权书怎么开网店无货源店铺
  • 网站设计的基本知识apache网站部署
  • 多语言外贸网站制作温州生活网招聘信息
  • 网站建设有哪些项目文字做图网站
  • 网站代理公司动漫设计专升本可以考哪些学校