重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
利用Java怎么将excel表格转换成json数据?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
十多年的兰州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整兰州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“兰州网站设计”,“兰州网站推广”以来,每个客户项目都认真落实执行。
实现方法如下:
package org.duang.test; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; /** * excel表格转成json * @ClassName: Excel2JSONHelper * @Description:TODO(这里用一句话描述这个类的作用) * @author LiYonghui * @date 2017年1月6日 下午4:42:43 */ public class Excel2JSONHelper { //常亮,用作第一种模板类型,如下图 private static final int HEADER_VALUE_TYPE_Z=1; //第二种模板类型,如下图 private static final int HEADER_VALUE_TYPE_S=2; public static void main(String[] args) { File dir = new File("e:\\2003.xls"); Excel2JSONHelper excelHelper = getExcel2JSONHelper(); //dir文件,0代表是第一行为保存到数据库或者实体类的表头,一般为英文的字符串,2代表是第二种模板, JSONArray jsonArray = excelHelper.readExcle(dir, 0, 2); System.out.println(jsonArray.toString());; } /** * * 获取一个实例 */ private static Excel2JSONHelper getExcel2JSONHelper(){ return new Excel2JSONHelper(); } /** * 文件过滤 * @Title: fileNameFileter * @Description: TODO(这里用一句话描述这个方法的作用) * @param: * @author LiYonghui * @date 2017年1月6日 下午4:45:42 * @return: void * @throws */ private boolean fileNameFileter(File file){ boolean endsWith = false; if(file != null){ String fileName = file.getName(); endsWith = fileName.endsWith(".xls") || fileName.endsWith(".xlsx"); } return endsWith; } /** * 获取表头行 * @Title: getHeaderRow * @Description: TODO(这里用一句话描述这个方法的作用) * @param: @param sheet * @param: @param index * @param: @return * @author LiYonghui * @date 2017年1月6日 下午5:05:24 * @return: Row * @throws */ private Row getHeaderRow(Sheet sheet, int index){ Row headerRow = null; if(sheet!=null){ headerRow = sheet.getRow(index); } return headerRow; } /** * 获取表格中单元格的value * @Title: getCellValue * @Description: TODO(这里用一句话描述这个方法的作用) * @param: @param row * @param: @param cellIndex * @param: @param formula * @param: @return * @author LiYonghui * @date 2017年1月6日 下午5:40:28 * @return: Object * @throws */ private Object getCellValue(Row row,int cellIndex,FormulaEvaluator formula){ Cell cell = row.getCell(cellIndex); if(cell != null){ switch (cell.getCellType()) { //String类型 case Cell.CELL_TYPE_STRING: return cell.getRichStringCellValue().getString(); //number类型 case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { return cell.getDateCellValue().getTime(); } else { return cell.getNumericCellValue(); } //boolean类型 case Cell.CELL_TYPE_BOOLEAN: return cell.getBooleanCellValue(); //公式 case Cell.CELL_TYPE_FORMULA: return formula.evaluate(cell).getNumberValue(); default: return null; } } return null; } /** * 获取表头value * @Title: getHeaderCellValue * @Description: TODO(这里用一句话描述这个方法的作用) * @param: @param headerRow * @param: @param cellIndex 英文表头所在的行,从0开始计算哦 * @param: @param type 表头的类型第一种 姓名(name)英文于实体类或者数据库中的变量一致 * @param: @return * @author LiYonghui * @date 2017年1月6日 下午6:12:21 * @return: String * @throws */ private String getHeaderCellValue(Row headerRow,int cellIndex,int type){ Cell cell = headerRow.getCell(cellIndex); String headerValue = null; if(cell != null){ //第一种模板类型 if(type == HEADER_VALUE_TYPE_Z){ headerValue = cell.getRichStringCellValue().getString(); int l_bracket = headerValue.indexOf("("); int r_bracket = headerValue.indexOf(")"); if(l_bracket == -1){ l_bracket = headerValue.indexOf("("); } if(r_bracket == -1){ r_bracket = headerValue.indexOf(")"); } headerValue = headerValue.substring(l_bracket+1, r_bracket); }else if(type == HEADER_VALUE_TYPE_S){ //第二种模板类型 headerValue = cell.getRichStringCellValue().getString(); } } return headerValue; } /** * 读取excel表格 * @Title: readExcle * @Description: TODO(这里用一句话描述这个方法的作用) * @param: @param file * @param: @param headerIndex * @param: @param headType 表头的类型第一种 姓名(name)英文于实体类或者数据库中的变量一致 * @author LiYonghui * @date 2017年1月6日 下午6:13:27 * @return: void * @throws */ public JSONArray readExcle(File file,int headerIndex,int headType){ List
excel表格模板类型和调用方式
第一种 :用括号把实体类变量名称或者数据库字段名称括起来
调用方法如下:
//表格的名称为2003.xls File file= new File("e:\\2003.xls"); Excel2JSONHelper excelHelper = getExcel2JSONHelper(); //字母表头为在第1行,第1种模板类型 JSONArray jsonArray = excelHelper.readExcle(file, 1, 1);
第二种: 实体类变量名称或者数据库字段另起一行,如下两张图都行
调用方法如下:
//表格的名称为2003.xls File file= new File("e:\\2003.xls"); Excel2JSONHelper excelHelper = getExcel2JSONHelper(); //字母表头为在第1行,第2种模板类型 JSONArray jsonArray = excelHelper.readExcle(file, 1, 2);
//表格的名称为2003.xls File file= new File("e:\\2003.xls"); Excel2JSONHelper excelHelper = getExcel2JSONHelper(); //字母表头为在第2行,第2种模板类型 JSONArray jsonArray = excelHelper.readExcle(file, 2, 2);
jsonArray打印的结果
看完上述内容,你们掌握利用Java怎么将excel表格转换成json数据的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!