`

POI读取Excel生成JSON数据

    博客分类:
  • poi
 
阅读更多

 

背景:项目需要一个全国省份的国标码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文件



 

  • 大小: 21.9 KB
  • 大小: 48.3 KB
1
1
分享到:
评论
3 楼 lizepeng201021 2016-02-17  
mark.....
2 楼 henu_zhangyang 2016-02-15  
bjqincy 写道
既然有excel的文件,为什么不用excel的公式来生成的呢

受教 又多了一种方式
1 楼 bjqincy 2016-02-15  
既然有excel的文件,为什么不用excel的公式来生成的呢

相关推荐

    jxls-poi导出excel示例代码文件

    这里我们将深入探讨`jxls-poi`这个库,它是如何帮助我们从JSON数据生成Excel文件的。 `jxls`是一个Java库,它扩展了Apache POI项目,使得我们可以使用简单的模板语法来读写Excel文件。`jxls-poi`是`jxls`的一个分支...

    ExcelToJson.rar

    在描述中提到,“可将excel表格中的数据转换成JSON”,这意味着这个工具或程序能够读取Excel文件,解析其中的表格数据,并将其转换成JSON对象。这个过程通常涉及到以下几个关键步骤: 1. **数据读取**:首先,程序...

    excel2json

    4. **输出文件**:最后,生成的JSON数据会被写入一个新的文件,文件名可能是输入Excel文件的名称加上.json后缀。 在实际应用中,“excel2json”工具可能提供命令行参数来控制转换过程,例如指定输入文件、输出文件...

    exceltojson.zip

    这些类可能定义了读取Excel文件、处理数据并生成JSON的逻辑。而“excel1.xls”则很可能是用于测试转换功能的一个样本Excel文件。 在这个过程中,可能涉及到的关键技术包括: 1. **Apache POI**:这是一个Java库,...

    Poi 读写Excel 合并ExcelSheet Struts2实现

    在企业级应用中,有时我们需要通过编程方式来读取、写入或合并Excel数据。Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,包括Excel。Struts2作为一款经典的MVC框架,常用于构建Web应用...

    读取EXCEL Demo&Servlet DEMO

    在这个项目中,Servlet接收来自客户端的请求,处理数据(读取Excel),并返回响应,这些响应可能包含动态生成的HTML或者JSON数据。 5. **Ajax(Asynchronous JavaScript and XML)**:Ajax是一种创建动态网页的技术...

    excel 导出为json

    总结起来,将Excel数据导出为JSON涉及到数据的读取、转换和写入。这个过程可以帮助你更好地集成Excel数据到Web应用、数据可视化工具和其他依赖JSON格式的应用中,同时保持数据的结构化和易用性。

    excel转json

    3. **生成JSON**:将Excel数据转换为JSON格式,需要用到JSON库,如Jackson或Gson。这些库提供API,使得我们可以方便地创建JSON对象并序列化为字符串。在Java中,可以将Excel表格的每一行映射为一个JSON对象,然后将...

    Excel转json

    而Gson库则是Google提供的一个用于在Java对象和JSON数据之间进行映射的Java库,它使得在Java中处理JSON变得简单。 以下是使用Apache POI和Gson进行Excel到JSON转换的步骤: 1. **引入依赖**:在项目中引入Apache ...

    springboot 导出excel 导入excel 生成excel 内容有点多

    Excel生成 生成Excel文件与导出类似,但通常会根据用户输入或数据库数据动态生成。可以创建一个模板,然后根据需要填充数据,最后将工作簿写入到响应流中供用户下载。 以上就是Spring Boot中处理Excel文件的基本...

    ExcelToData_解析excel工具_json表格_

    1. **Excel解析**:Excel解析是指通过编程语言(如Python的pandas库,Java的Apache POI,JavaScript的xlsx库等)读取Excel文件,获取其中的数据。这通常包括打开文件、读取工作表、选择特定范围、处理数据格式和样式...

    ssm +poi + json 整合jar包

    在Java中处理Excel数据时,POI可以创建、修改和读取Excel工作簿、工作表、单元格等,为数据分析和报表生成提供了强大的工具。 最后是阿里巴巴的JSON库: 5. **Fastjson/Alibaba JSON-lib**:这两者都是阿里巴巴...

    将xls转变为json格式工具

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端数据交互,因为它易于阅读和编写,同时也易于机器解析和生成。而XLS是Microsoft Excel的二进制文件格式,用于存储表格数据。 在描述...

    excel 转java 以及JSON工具类

    1. 导入Excel文件:工具类首先需要能够打开并读取Excel文件,这通常通过Apache POI库实现,它可以处理不同版本的Excel文件。 2. 解析数据:读取到数据后,工具会按照预设的规则(例如,列名对应Java字段名)解析每个...

    POI导入导出excel

    标题"POI导入导出excel"指的是使用Apache POI库来处理Microsoft Excel文件,包括读取(导入)和写入(导出)数据。Apache POI是一个开源项目,允许Java开发者创建、修改和显示Microsoft Office格式的文件,其中Excel...

    easyExcel生成个性化表格(自定义行高,合并,字体,去网格线),前后端分离开发下,返回错误的JSON数据给前端

    本篇文章将深入探讨如何利用EasyExcel生成个性化表格,包括自定义行高、单元格合并、设置字体以及去除网格线,并且在前后端分离的开发模式下,如何正确地返回JSON数据给前端。 首先,让我们了解EasyExcel的基本使用...

    Java实现excel表格转成json的方法

    在Java编程中,将Excel表格转换为JSON格式是一种常见的数据处理需求,特别是在数据导入导出、数据分析或Web应用中。Apache POI库是Java中处理Microsoft Office格式文档的强大工具,其中包括Excel(.xls和.xlsx)文件...

    Excel表格读取工具

    总之,“Excel表格读取工具”是一个强大的数据处理工具,通过使用Java的Apache POI库,它可以高效地解析Excel文件并将数据转换为JSON格式,便于数据的进一步处理和传输。在实际项目中,这样的工具可以极大地提高开发...

    spark-excel:一个用于通过Apache POI读取Excel文件的Spark插件

    它利用了 Apache POI 的强大功能,使开发者能够方便地读取和写入 Excel 数据,而无需离开 Spark 生态系统。这对于那些需要在大数据处理流程中集成 Excel 数据的项目来说是一个非常有价值的工具。

Global site tag (gtag.js) - Google Analytics