背景:项目需要一个全国省份的国标码JSON数据,网上找了一圈,没有找到合适的,但是自己有Excel版本的数据,于是乎,不想copy数据,就写了一个小程序,用POI读取Excel,然后生成JSON数据
package com.besttone.util; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.nio.Buffer; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Workbook; public class CreateProvinceJsonUtil { /** * @description: 根据excel文件生成对应的json字符串 * @return * @throws FileNotFoundException */ public static String createJson() throws FileNotFoundException { InputStream is = new FileInputStream("E:\\信令项目\\provinceCode.xls"); StringBuffer buffer = new StringBuffer(); try { Workbook workbook = new HSSFWorkbook(is); HSSFSheet sheet = (HSSFSheet) workbook.getSheetAt(0); String key = ""; String value = ""; buffer.append("["); for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) { HSSFRow row = sheet.getRow(i); for(int j=0;j<row.getPhysicalNumberOfCells();j++){ HSSFCell cell = row.getCell(j); if(i==0){ if(j==0){ key = cell.getStringCellValue(); } if(j==1){ value = cell.getStringCellValue(); } } else{ if(j==0){ buffer.append("{\"" + key + "\"" + ":" + "\"" + getCellValue(cell) + "\"" + ","); } if(j==1){ buffer.append("\"" + value + "\"" + ":" + "\"" + getCellValue(cell) + "\"}"); } } } if(sheet.getPhysicalNumberOfRows()-1!=i && i!=0){ buffer.append(","); } buffer.append("\r"); } buffer.append("]"); } catch (IOException e) { System.out.println("出现异常"); e.printStackTrace(); } return buffer.toString(); } /** * 获取当前单元格内容 * */ private static String getCellValue(Cell cell){ String value = ""; if(cell!=null){ switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: if(HSSFDateUtil.isCellDateFormatted(cell)){ //日期类型 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()); value = sdf.format(date); }else{ Integer data = (int) cell.getNumericCellValue(); value = data.toString(); } break; case Cell.CELL_TYPE_STRING: value = cell.getStringCellValue(); break; case Cell.CELL_TYPE_BOOLEAN: Boolean data = cell.getBooleanCellValue(); value = data.toString(); break; case Cell.CELL_TYPE_ERROR: System.out.println("单元格内容出现错误"); break; case Cell.CELL_TYPE_FORMULA: value = String.valueOf(cell.getNumericCellValue()); if (value.equals("NaN")) {// 如果获取的数据值非法,就将其装换为对应的字符串 value = cell.getStringCellValue().toString(); } break; case Cell.CELL_TYPE_BLANK: System.out.println("单元格内容 为空值 "); break; default : value = cell.getStringCellValue().toString(); break; } } return value; } /** * @description: 将生成的字符串输出到一个文件中 * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String str = createJson(); OutputStream os = new FileOutputStream("E:\\信令项目\\provinceCode.json"); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); ObjectOutputStream oos = null; try { bw.write(str); } catch (IOException e) { e.printStackTrace(); }finally{ if(bw!=null){ bw.close(); } if(os!=null){ os.close(); } } } }
要读取的excel文件:
最后生成的JSON文件
相关推荐
这里我们将深入探讨`jxls-poi`这个库,它是如何帮助我们从JSON数据生成Excel文件的。 `jxls`是一个Java库,它扩展了Apache POI项目,使得我们可以使用简单的模板语法来读写Excel文件。`jxls-poi`是`jxls`的一个分支...
在描述中提到,“可将excel表格中的数据转换成JSON”,这意味着这个工具或程序能够读取Excel文件,解析其中的表格数据,并将其转换成JSON对象。这个过程通常涉及到以下几个关键步骤: 1. **数据读取**:首先,程序...
4. **输出文件**:最后,生成的JSON数据会被写入一个新的文件,文件名可能是输入Excel文件的名称加上.json后缀。 在实际应用中,“excel2json”工具可能提供命令行参数来控制转换过程,例如指定输入文件、输出文件...
这些类可能定义了读取Excel文件、处理数据并生成JSON的逻辑。而“excel1.xls”则很可能是用于测试转换功能的一个样本Excel文件。 在这个过程中,可能涉及到的关键技术包括: 1. **Apache POI**:这是一个Java库,...
在企业级应用中,有时我们需要通过编程方式来读取、写入或合并Excel数据。Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,包括Excel。Struts2作为一款经典的MVC框架,常用于构建Web应用...
在这个项目中,Servlet接收来自客户端的请求,处理数据(读取Excel),并返回响应,这些响应可能包含动态生成的HTML或者JSON数据。 5. **Ajax(Asynchronous JavaScript and XML)**:Ajax是一种创建动态网页的技术...
总结起来,将Excel数据导出为JSON涉及到数据的读取、转换和写入。这个过程可以帮助你更好地集成Excel数据到Web应用、数据可视化工具和其他依赖JSON格式的应用中,同时保持数据的结构化和易用性。
3. **生成JSON**:将Excel数据转换为JSON格式,需要用到JSON库,如Jackson或Gson。这些库提供API,使得我们可以方便地创建JSON对象并序列化为字符串。在Java中,可以将Excel表格的每一行映射为一个JSON对象,然后将...
而Gson库则是Google提供的一个用于在Java对象和JSON数据之间进行映射的Java库,它使得在Java中处理JSON变得简单。 以下是使用Apache POI和Gson进行Excel到JSON转换的步骤: 1. **引入依赖**:在项目中引入Apache ...
Excel生成 生成Excel文件与导出类似,但通常会根据用户输入或数据库数据动态生成。可以创建一个模板,然后根据需要填充数据,最后将工作簿写入到响应流中供用户下载。 以上就是Spring Boot中处理Excel文件的基本...
1. **Excel解析**:Excel解析是指通过编程语言(如Python的pandas库,Java的Apache POI,JavaScript的xlsx库等)读取Excel文件,获取其中的数据。这通常包括打开文件、读取工作表、选择特定范围、处理数据格式和样式...
在Java中处理Excel数据时,POI可以创建、修改和读取Excel工作簿、工作表、单元格等,为数据分析和报表生成提供了强大的工具。 最后是阿里巴巴的JSON库: 5. **Fastjson/Alibaba JSON-lib**:这两者都是阿里巴巴...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端数据交互,因为它易于阅读和编写,同时也易于机器解析和生成。而XLS是Microsoft Excel的二进制文件格式,用于存储表格数据。 在描述...
1. 导入Excel文件:工具类首先需要能够打开并读取Excel文件,这通常通过Apache POI库实现,它可以处理不同版本的Excel文件。 2. 解析数据:读取到数据后,工具会按照预设的规则(例如,列名对应Java字段名)解析每个...
标题"POI导入导出excel"指的是使用Apache POI库来处理Microsoft Excel文件,包括读取(导入)和写入(导出)数据。Apache POI是一个开源项目,允许Java开发者创建、修改和显示Microsoft Office格式的文件,其中Excel...
本篇文章将深入探讨如何利用EasyExcel生成个性化表格,包括自定义行高、单元格合并、设置字体以及去除网格线,并且在前后端分离的开发模式下,如何正确地返回JSON数据给前端。 首先,让我们了解EasyExcel的基本使用...
它利用了 Apache POI 的强大功能,使开发者能够方便地读取和写入 Excel 数据,而无需离开 Spark 生态系统。这对于那些需要在大数据处理流程中集成 Excel 数据的项目来说是一个非常有价值的工具。
在Java编程中,将Excel表格转换为JSON格式是一种常见的数据处理需求,特别是在数据导入导出、数据分析或Web应用中。Apache POI库是Java中处理Microsoft Office格式文档的强大工具,其中包括Excel(.xls和.xlsx)文件...
总之,“Excel表格读取工具”是一个强大的数据处理工具,通过使用Java的Apache POI库,它可以高效地解析Excel文件并将数据转换为JSON格式,便于数据的进一步处理和传输。在实际项目中,这样的工具可以极大地提高开发...