package skuPrice;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; public class JDSku { public static void main(String[] args) {
String[] strs = args;
String filename = strs[0];
String sheetname = strs[1];
getSkuPrice(filename,sheetname);
}
/**
* @author wk
* @date 2019/09/18
* @param fileName
* @param bookName
*/
public static void getSkuPrice(String fileName,String bookName){
System.out.println("进入解析价格方法..........");
InputStream input = null;
FileOutputStream output = null;
long start = System.currentTimeMillis();
try {
System.out.println("**********正在读取“"+fileName+".xlsx”文件**************");
input = new FileInputStream(new File("D:\\"+fileName+".xlsx"));
String skujson = "";
String skus = "";
XSSFWorkbook work = new XSSFWorkbook(input);
XSSFSheet sheet = work.getSheet(bookName);
int linenum = sheet.getLastRowNum();//获取excel
System.out.println(sheet.getLastRowNum());
int flag = 0;
try{
for (int i = 1; i <= linenum; i++) {//读取每一行数据
flag = i;
XSSFRow row = sheet.getRow(i);
short lastcellnum= row.getLastCellNum();
row.getCell(7).setCellType(Cell.CELL_TYPE_STRING);
row.getCell(9).setCellType(Cell.CELL_TYPE_STRING);
skujson= row.getCell(7).getStringCellValue(); //获取包含sku的价格
skus = row.getCell(9).getStringCellValue(); //获取sku
System.out.println("EXPAND_INFO:"+skujson.toString());
JSONObject skuob = JSONArray.parseObject(skujson);
String pricestr = skuob.getString("price");
JSONObject pricejson = JSONArray.parseObject(pricestr);
String price= pricejson.getString(skus);
System.out.println(skus+"============"+price);
try{
row.createCell(lastcellnum+1, Cell.CELL_TYPE_STRING);
// row.getCell(15).setCellType(Cell.CELL_TYPE_STRING);
row.getCell(lastcellnum+1).setCellValue(price);
}catch (Exception e) {
e.printStackTrace();
continue;
}
}
}catch(Exception e){
output = new FileOutputStream(new File("D:\\"+fileName+"解析后文件.xlsx"));
work.write(output);//写入excel
System.out.println("解析到第"+(flag+1)+"行,部分解析成功,请重试.........");
e.printStackTrace();
}
output = new FileOutputStream(new File("D:\\"+fileName+"解析后文件.xlsx"));
work.write(output);//写入excel
long end = System.currentTimeMillis();
long use = (end-start)/60000;
System.out.println("*********SUCCESS*********");
System.err.println("共用时:"+use+"分钟");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}

POI 读取Excel文件 并解析JSON数据的更多相关文章

  1. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  2. JAVA使用POI读取EXCEL文件的简单model

    一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...

  3. 使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10

    使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10 [问题点数:40分,结帖人xieyongqiu]             不显示删除回复             ...

  4. POI 读取Excel文档中的数据——兼容Excel2003和Excel2007

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. HSSF - 提供读写Microsoft Exce ...

  5. Java实现POI读取Excel文件,兼容后缀名xls和xlsx

    1.引入所需的jar包: maven管理项目的话直接添加以下坐标即可: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -- ...

  6. 使用POI读取excel文件内容

    1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...

  7. spring boot 使用 POI 读取Excel文件

    内容简介 本文主要介绍使用POI进行Excel文件的相关操作,涉及读取文件,获取sheet表格,对单元格内容进行读写操作,以及合并单元格的操作. Excel文件目录 Excel模板文件存了resour ...

  8. 使用jxl,poi读取excel文件

    作用:在java后台添加一个方法,读取导入的excel内容,根据需要返回相应的sql语句,以完成对临时表的插入操作. 使用jxl读取excel文件 package com.sixthf.bi.sapp ...

  9. jspsmart(保存文件)+poi(读取excel文件)操作excel文件

    写在前面: 项目环境:jdk1.4+weblogic 需求:能上传excel2003+2007 由于项目不仅需要上传excel2003,还要上传excel2007,故我们抛弃了jxl(只能上传exce ...

随机推荐

  1. SpringCloud2.0 Eureka Client 服务注册 基础教程(三)

    1.创建[服务提供者],即 Eureka Client 1.1.新建 Spring Boot 工程,工程名称:springcloud-eureka-client 1.2.工程 pom.xml 文件添加 ...

  2. python 中根据python版本(2或3)定义函数

    示意代码如下: #_*_coding:UTF-8_*_ import time import socket import os import sys if sys.version_info.major ...

  3. 2019年杭电多校第三场 1008题Game(HDU6610+带修改莫队+Nim博弈)

    题目链接 传送门 题意 给你\(n\)堆石子,每堆有\(a_i\)堆石子,\(q\)次操作: 在\([L,R]\)内有多少个子区间使得\(Alice\)(先手)在\(Nim\)博弈中获胜: 交换\(a ...

  4. python面试题&练习题之函数

    1.写函数,接收两个数字参数,返回最大值例如:传入:10,20返回:20 def res_max(number1,number2): l1 = [] l1.append(number1) l1.app ...

  5. 命令行创建react.js项目

    npm install -g create-react-app  /*搭建一个全局的脚手架*/ create-react-app my-demo        /*创建项目 my-demo是项目名字* ...

  6. LOJ P10249 weight 题解

    每日一题 day58 打卡 Analysis 这道题搜索的想法非常巧妙,从两端向中间找,这样可以保证仅仅对于head或tail而言,需要用到的前缀和与后缀和是单调递增的,这样排个序就解决了. 值得一提 ...

  7. 洛谷P1107 [BJWC2008]雷涛的小猫 题解

    题面 以下是luogu给的标签 但字符串是什么鬼.... 玄学... 哦吼~ #include<cstdio> #include<iostream> using namespa ...

  8. shell中脚本参数传递getopts

    while getopts ":a:b:c:" opt do case $opt in a) echo "参数a的值$OPTARG" ;; b) echo &q ...

  9. 数据库与spring事务传播特性

    一.spring事务管理的实现原理,基于AOP 1) REQUIRED ,这个是默认的属性 Support a current transaction, create a new one if non ...

  10. WINDOWS 命令行调用SAS代码 并指定输出路径 示例

    ECHO "设置SAS.EXE 路径" SET PATH=D:\Program Files\SASHome\SASFoundation\9.4\SAS.EXE echo " ...