文档章节

java通过apache POI读取Excel文件生成JSON数据

菩提_
 菩提_
发布于 2016/02/16 11:52
字数 407
阅读 87
收藏 3
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
            <scope>test</scope>
        </dependency>
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.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 {

  /**
   * @return
   * @throws FileNotFoundException
   * @description: 根据excel文件生成对应的json字符串
   */
  public static String createJson() throws FileNotFoundException {
    InputStream is = new FileInputStream("D:\\a.xls");
    StringBuilder buffer = new StringBuilder();
    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("{\"").append(key).append("\"").append(":").append("\"").append(getCellValue(cell)).append("\"").append(",");
            }
            if (j == 1) {
              buffer.append("\"").append(value).append("\"").append(":").append("\"").append(getCellValue(cell)).append("\"}");
            }

          }
        }
        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();
          }
          break;
        case Cell.CELL_TYPE_BLANK:
          System.out.println("单元格内容 为空值 ");
          break;
        default:
          value = cell.getStringCellValue();
          break;
      }
    }
    return value;
  }

  /**
   * @param args
   * @throws IOException
   * @description: 将生成的字符串输出到一个文件中
   */
  public static void main(String[] args) throws IOException {
    String str = createJson();
    OutputStream os = new FileOutputStream("D:\\provinceCode.json");
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
    ObjectOutputStream oos = null;
    try {
      bw.write(str);
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      bw.close();
      os.close();
    }
  }

}





© 著作权归作者所有

共有 人打赏支持
菩提_
粉丝 2
博文 113
码字总数 24338
作品 0
朝阳
程序员
Java Apache POI 操作 Excel 导出

版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82655653 Java Apache POI 操作 Excel 导出 Java 可以通过 Apache POI......

asing1elife
09/12
0
0
使用 Apache POI 处理 Microsoft Office 文档

原文同步至:http://www.waylau.com/apache-poi-handle-microsoft-documents/ POI 概述 Apache POI 项目的使命是创造和维护 Java API 操纵各种格式的文件,其中包括基于 Office Open XML 标准...

waylau
2015/02/01
0
0
POI框架:Java程序读取Excel

What:POI是什么? Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 HOW:如何使用java程序读取Excel文件中的内容? 1.坐标(导...

aboyliupu
07/31
0
0
JAVA使用POI操作excel

一直想写一个poi的使用的总结,话说我第一份正式工作接到的第一个工作就是当时TL让我去整理项目的数据字典,即把内容插入到CSV上,然后把csv的内容插入到数据库中,而且我印象极深的当时使用...

王小明123
2013/01/09
0
12
Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出的格式一般是EXCEL或者...

MiniBu
2015/04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
7
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
2
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
18
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部