js和java按照json格式导出数据
2016-03-03 21:16
459 查看
js和java按照json格式导出数据
工作中遇到了需要从表中取出大量数据后,再和所得数据进行对比取值的事,这不能一个数据一个数据的录吧,于是就取了点巧,自己写了一个简单的程序,真是节省了我的不少时间,废话少说吧。
这个程序主要是用来将符合规范的数据进行处理之后,通过字符串拼接的方式进行json格式的转换。
js代码:
导出的数据就是这样,IE7,8,9都能支持,FireFox我也试过,搜了些资料,说是要下一个下IE Tag组件,但是下了就是不好使所以有知道的朋友可以留言告诉一下,非常感谢!!!
用带有IE浏览器功能的软件也行,本人用的是EditPlus,可以使用
-------------------------------------------------------------昏隔线------------------------------------------------------------------------------
下面是java的代码:
本想插两张图片的,但是好像放了图片不显示,好像还不能上传文件。。。就简单说下步骤吧。
java建一个工程,在src的统计目录下创建一个文件夹,将excel文件都放到res文件夹中
只用修改java文件中excel的文件名就能实现对不同的excel导出数据。
这两种方式都只能导出符合规范的数据,也可以根据自己的业务进行一些修改。
规范格式一:
规范格式二:
整个过程就是这样了,表达能力有限,注释有点少,不懂的可以留言。。。
工作中遇到了需要从表中取出大量数据后,再和所得数据进行对比取值的事,这不能一个数据一个数据的录吧,于是就取了点巧,自己写了一个简单的程序,真是节省了我的不少时间,废话少说吧。
这个程序主要是用来将符合规范的数据进行处理之后,通过字符串拼接的方式进行json格式的转换。
js代码:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <script> /** * @author Liuhang */ function readThis(){ var filePath= document.all.upfile.value; var oXL = new ActiveXObject("Excel.application"); var oWB = oXL.Workbooks.open(filePath); oWB.worksheets(1).select(); var oSheet = oWB.ActiveSheet; try { var i = 1;//行 var j = 2;//列 var k = 1;//固定读取第一列的位置 始终不变 //用来进行交叉的键值读取 var flag = true; document.write("var obj={"); var cell = ''; //获取总行数 var rows = oSheet.usedrange.rows.count; //获取总列数 var cols = oSheet.usedrange.columns.count; //循环读表 while(true) { if(i>rows){ //如果读取的数据超过总行数 j++; i=1; flag = true; //如果读到列末 if(j==cols+1){ document.write("}};"); break; }else{ document.write("},"); } } //交叉读取键值 if(flag){ //第一个json键 if(i==1){ cell = oSheet.Cells(i,j).value; document.write("'"+cell+"':{"); i++; flag = false; //以列为键,先读第一个json数组对应的键,跳过循环,开始遍历值 continue; // }else{ cell = oSheet.Cells(i,j).value; //(行,列) flag = false; i++; } }else{ cell = oSheet.Cells(i,k).value; //(行,列) flag = true; } //主要用来输出数据,拼字符串 if(flag){ document.write("'"+cell+"':"); }else{ if(i==rows+1){ //读到空格子则转换空字符串'' if(cell==null){ document.write("''"); }else{ document.write("'"+cell+"'"); } }else{ if(cell==null){ document.write("''"); }else{ document.write("'"+cell+"',"); } } } } } catch(e) { alert(e.message); } oWB.Close(); //不close工作簿的话,后果还是挺严重的。 oWB = null; oXL = null; } </script> <input type="file" id="upfile" /><input type="button" onclick="readThis();" value="读取"> <br> <textarea id="txtArea" cols=50 rows=10></textarea> </html>
导出的数据就是这样,IE7,8,9都能支持,FireFox我也试过,搜了些资料,说是要下一个下IE Tag组件,但是下了就是不好使所以有知道的朋友可以留言告诉一下,非常感谢!!!
用带有IE浏览器功能的软件也行,本人用的是EditPlus,可以使用
-------------------------------------------------------------昏隔线------------------------------------------------------------------------------
下面是java的代码:
package readExcl; import java.io.File; import jxl.Cell; import jxl.CellType; import jxl.Sheet; import jxl.Workbook; /** * @author Liuhang * */ public class ReadExc { public static void main(String[] args) { int i; int j; //第一列的值 (json) int k; //是否是读的键值对中的值 boolean flag = false; Sheet sheet; Workbook book; Cell cell1; try { //t.xls为要读取的excel文件名 book= Workbook.getWorkbook(new File("res/侧面回弹修正.xls")); sheet=book.getSheet(0); // json i = 0; //行 j = 1; //列 k = 0; //固定读取第一列的位置 始终不变 cell1 = null; //用来进行交叉的键值读取 flag = true; System.out.println("var obj={"); while(true) { /* * json格式实现 */ if(i>=sheet.getRows()){ //如果读取的数据超过总行数 进行行列初始化 j++; i=0; flag = true; //如果读到了列的末尾,则结束循环 if(j==sheet.getColumns()){ System.out.print("}};"); break; }else{ System.out.print("},"); } } //交叉读取键值 if(flag){ //第一个json键 if(i==0){ cell1 = sheet.getCell(j,i); System.out.print("'"+cell1.getContents()+"':{"); i++; flag = false; //以列为键,先读第一个json数组对应的键,跳过循环,开始遍历值 continue; }else{ cell1 = sheet.getCell(j,i); //(列,行) flag = false; i++; } }else{ cell1 = sheet.getCell(k,i); //(列,行) flag = true; } //主要用来输出数据,拼字符串 if(flag){ System.out.print("'"+cell1.getContents()+"':"); }else{ if(i==sheet.getRows()){ System.out.print("'"+cell1.getContents()+"'"); }else{ System.out.print("'"+cell1.getContents()+"',"); } } } //关闭工作薄 book.close(); } catch(Exception e) { e.printStackTrace(); } } }
本想插两张图片的,但是好像放了图片不显示,好像还不能上传文件。。。就简单说下步骤吧。
java建一个工程,在src的统计目录下创建一个文件夹,将excel文件都放到res文件夹中
只用修改java文件中excel的文件名就能实现对不同的excel导出数据。
这两种方式都只能导出符合规范的数据,也可以根据自己的业务进行一些修改。
规范格式一:
规范格式二:
整个过程就是这样了,表达能力有限,注释有点少,不懂的可以留言。。。
相关文章推荐
- mybatis与spring整合事务管理
- Java关键字——instanceof
- Spring文档学习--缓存(Cache Abstraction)
- [think in java]知识点学习
- webmagic的设计机制及原理-如何开发一个Java爬虫
- Java杭电2072
- java笔记1
- java DES加密解密
- Java集合框架
- 【JAVA知识】IO流
- JDK1.7的新特性
- java.io 类分层结构 (Java 2 Platform SE 6)
- 手把手教你搭建SpringMVC——最小化配置
- Eclipse下Add Native Support报错:“Unable to launch cygpath”解决方案
- Java垃圾回收机制
- Java的方法重载
- Spring配置文件<context:property-placeholder>标签使用漫谈
- spring 中属性scope 的prototype(有状态)和singleton(无状态)
- eclipse如何快速查找某个类
- 了解Java的反射,使用Java的反射!