网站 推广方案,网站建设行业 前景,网络工程学什么,网页设计代码是怎么加链接很多开发语言都能找到excel文档读写的库#xff0c;但是在资源极其受限的环境下开发#xff0c;引入这些库会带来兼容性问题。因为一个小功能引入一堆库#xff0c;我始终觉得划不来。看到有项目引用的jar包有一百多个#xff0c;看着头麻#xff0c;根本搞不清谁依赖谁。…很多开发语言都能找到excel文档读写的库但是在资源极其受限的环境下开发引入这些库会带来兼容性问题。因为一个小功能引入一堆库我始终觉得划不来。看到有项目引用的jar包有一百多个看着头麻根本搞不清谁依赖谁。你会说用maven、gradle来解决但是我极不喜欢比如在java与安卓都要支持的情况就要碰到麻烦了。
通过分析excel文档格式自己用模板生成就不会碰到这类问题。xlsx格式是开放的xml形式的应该也会稳定很长时间。下面介绍一下分析的结果实现方法类似于我前面写的关于docx文件的输出操作。java中可以使用freemarker、js等动态的方法替换模板其他语言应该有类似的工具。java中用到的工具只有zip开发语言自带jsjdk11自带或用quickjs或freemarker连接如下
java中怎样用最简单方法实现写word文档_java 写word-CSDN博客
xls文档格式介绍看这篇文档OOXML详解Excel工作表(worksheet) - 知乎 (zhihu.com)
xlsx文档本质也是一个zip文件将扩展名改成zip然后解压目录如下主要内容都在xl子目录中 worksheets目录下有各个sheet的数据比如sheet1.xml。只要将数据逐行格式化输出到sheet1.xml就行了输出完成后再将内容打包成zip然后将文件扩展名改成xlsx就可以了。 在输出到sheet1.xml时注意单元的类型不要设置一旦设置了tsv/v中的内容就是一个索引值比如01235...N表示字符串是sharedStrings.xml中的第N个字符串。sharedStrings.xml中记录了所有共享的字符串从前往后编号分别为0、1、2...。使用sharedStrings.xml能节省一点空间但是对于freemarker之类的格式库就麻烦了所以单元格不建议设置ts而是在v/v之间直接输出内容。
row r4 ht15.75 customHeight1 spans1:7
c rA1 s7v1/v/c
c rB1 s9 ts不可以有v7/v/c
/row
提供一个用js输出的sheet1.xml文件其中的list可以通过自己的一些方法传进来
var list[{a:1,b:1b,c:test1},{a:2,b:2b,c:test2}];
var txt[?xml version1.0 encodingUTF-8 standaloneyes?
worksheet xmlnshttp://schemas.openxmlformats.org/spreadsheetml/2006/main xmlns:rhttp://schemas.openxmlformats.org/officeDocument/2006/relationships xmlns:xdrhttp://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing xmlns:x14http://schemas.microsoft.com/office/spreadsheetml/2009/9/main xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006 xmlns:etchttp://www.wps.cn/officeDocument/2017/etCustomDatasheetPr/dimension refA1:C2/sheetViewssheetView tabSelected1 workbookViewId0selection activeCellC2 sqrefC2//sheetView/sheetViewssheetFormatPr defaultColWidth9 defaultRowHeight14.4 outlineLevelRow1 outlineLevelCol2/
sheetData
row r1 spans1:3c rA1 tsv0/v/cc rB1 tsv1/v/cc rC1 tsv2/v/c/row];
var i2;
for(var l of list) {txt.push(row r,i, spans1:3c rA,i,v,l.a,/v/cc rB,i,v,l.b,/v/cc rC,i,v,l.c,/v/c/row);i;
}
txt.push(/sheetDatapageMargins left0.7 right0.7 top0.75 bottom0.75 header0.3 footer0.3/
pageSetup paperSize9 orientationportrait/headerFooter//worksheet);
txt.join();
zip打包后再用excel打开就是下面这样。