JAVA读取、写入Excel表格(含03版)
引言
工作中可能会遇到对Excel读取和写入,如果我们自己手动写的话,会很麻烦,但是Apache中有poi工具类。poi工具类封装好了对于Excel读取和写入,我们需要用的时候,直接调用该方法就好了。
注:03和07的写法不一致。
区别如下
// HSSFWorkbook 2003的excel .xls,XSSFWorkbook导入2007的excel .xlsx
HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(new File(file)));
XSSFWorkbook workbook=new XSSFWorkbook(new FileInputStream(new File(file))));
代码实现
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.alibaba.fastjson.JSONObject;
/**
*
* Title: excelTest
* Description: excel表格读取
* 注意:引用poi 架包版本要一致
* 如:
* poi-3.13.jar
* poi-ooxml-3.13.jar
* poi-ooxml-schemas-3.13.jar
* poi-scratchpad-3.13.jar
* 这些架包版本随意
* stax-api.jar
* xmlbeans.jar
* dom4j.jar
* Version:1.0.0
* @author pancm
*/
public class excelTest {
private static final String path="D:\\file\\test.xlsx";
private static final String path1="D:\\file\\test1.xlsx";
public static void main(String[] args) throws FileNotFoundException, IOException {
readExcel(path);
writeExcel(path1);
}
/**
* 读取Excel表格内容
* @throws FileNotFoundException
* @throws IOException
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
private static void readExcel(String str) throws FileNotFoundException, IOException{
File file=new File(str);
// HSSFWorkbook 2003的excel .xls,XSSFWorkbook导入2007的excel .xlsx
// HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(new File(file)));
XSSFWorkbook workbook=new XSSFWorkbook(new FileInputStream(file));
Sheet sheet=workbook.getSheetAt(0);//读取第一个 sheet
List list= new ArrayList<>();
Row row=null;
int count=sheet.getPhysicalNumberOfRows();
//逐行处理 excel 数据
for (int i = 1; i <count; i++) {
JSONObject json=new JSONObject();
row=sheet.getRow(i);
Cell cell0 = row.getCell(0);
//设置取值为String
//整数数据要转,否则会变成浮点数
cell0.setCellType(Cell.CELL_TYPE_STRING);
Cell cell1 = row.getCell(1);
cell1.setCellType(Cell.CELL_TYPE_STRING);
json.put("Id",cell0.toString()); //编号
json.put("Name",cell1.toString()); //名称
list.add(json);
System.out.println("json:"+json);
}
workbook.close();
System.out.println("list:"+list);
}
/**
* 写入Excel表格内容
* @throws FileNotFoundException
* @throws IOException
*/
@SuppressWarnings({ "resource", "rawtypes", "unchecked" })
private static void writeExcel(String str) throws FileNotFoundException, IOException{
File file=new File(str);
// HSSFWorkbook 2003的excel .xls,XSSFWorkbook导入2007的excel .xlsx
// HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(new File(file)));
XSSFWorkbook workbook=new XSSFWorkbook(new FileInputStream(file));
List resultList =new ArrayList<>();
Sheet sheet1 = workbook.createSheet();//创建 sheet 对象
Row row = sheet1.createRow(0);//第一行,标题
row.createCell(0).setCellValue("A");
row.createCell(1).setCellValue("B");
row.createCell(2).setCellValue("C");
row.createCell(3).setCellValue("D");
row.createCell(4).setCellValue("E");
//拼接数据
for(int i=1;i<=10;i++){
JSONObject json1=new JSONObject();
json1.put("A", i);
json1.put("B", i*2);
json1.put("C", i*3);
json1.put("D", i*4);
json1.put("E", i*5);
resultList.add(json1);
}
System.out.println("resultList:"+resultList);
Row row1;
for (int i = 1, len = resultList.size(); i <=len; i++) {//循环创建数据行
//因为第一行已经设置了,所以从第二行开始
row1 = sheet1.createRow(i);
JSONObject json=(JSONObject) resultList.get(i-1);
row1.createCell(0).setCellValue(json.getString("A"));
row1.createCell(1).setCellValue(json.getString("B"));
row1.createCell(2).setCellValue(json.getString("C"));
row1.createCell(3).setCellValue(json.getString("D"));
row1.createCell(4).setCellValue(json.getString("E"));
}
FileOutputStream fos = new FileOutputStream(path1);
workbook.write(fos);//写文件
fos.close();
System.out.println("写入成功!");
}
}
示例图
读取Excel
新建一个Excel表格,设置表格内容。
关闭此Excel,运行代码,打印获取的数据。
写入Excel
创建一个新的Excel。
关闭此Excel,运行代码
再次打开此Excel
JAVA读取、写入Excel表格(含03版)的更多相关文章
- JXL读取写入excel表格数据
问题描述: 使用java的jxl包创建.写入excel表格数据 问题解决: (1)说明 (2)写入execel数据 注: 以上是写入数据需要调用的函数接口 注: 具体接口调用过程,如上所示 (3)读取 ...
- Java读取word中表格
因为要新建一个站,公司要把word表格的部分行列存到数据库中.之前用java操作过excel,本来打算用java从word表格中读取数据,再存到数据库中,结果因为权限不够,无法访问公司要写的那个数据库 ...
- java读取大容量excel之二(空格、空值问题)
最近在项目中发现,对于Excel2007(底层根本是xml) ,使用<java读取大容量excel之一>中的方式读取,若待读取的excel2007文件中某一列是空值,(注意,所谓的空值是什 ...
- python数据写入Excel表格
from openpyxl import Workbook def main(): sheet_name = "表名1" row_count = 6 # 行数 info_resul ...
- java后台读取/解析 excel表格
需求描述 前台需要上传excel表格,提交到后台,后台解析并返回给前台,展示在前台页面上! 前台部分代码与界面 <th style="padding: 7px 1px;width:15 ...
- Python读取Json字典写入Excel表格的方法
需求: 因需要将一json文件中大量的信息填入一固定格式的Excel表格,单纯的复制粘贴肯定也能完成,但是想偷懒一下,于是借助Python解决问题. 环境: Windows7 +Python2.7 + ...
- 《程序实现》从xml、txt文件里读取数据写入excel表格
直接上码 import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File; import java ...
- POI读取/写入Excel文件
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...
- R 脚本读取汇总 Excel 表格数据
主要用到了 xlsx 和 rJava 包,打开 Excel 文件,读取各表格数据,再写入到汇总表. 下图为处理前的原始数据表格: 下图为处理后的数据: 代码实现 安装&加载包的函数实现.ins ...
随机推荐
- bash脚本条件测试总结
一.if语句的结构 分为以下三种:单分支.双分支.多分支 单分支if语句 if CONDITION is True: then 分支 fi 双分支if语句 if CONDITION is True: ...
- 开发一个基于 Android系统车载智能APP
很久之前就想做一个车载相关的app.需要实现如下功能: (1)每0.2秒更新一次当前车辆的最新速度值. (2)可控制性记录行驶里程. (3)不连接网络情况下获取当前车辆位置.如(北京市X区X路X号) ...
- 快速学会使用Fiddler抓包 截包伪造提交包
1.Fiddler介绍 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑,移动设备和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddler的 ...
- Python爬虫入门:Cookie的使用
大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在 ...
- windows下配置wampserver
第一,打开局域网访问 配置文件:点击右下角的WAMP 服务器小托盘,选择Apache>httpd.conf 搜索关键字 "deny from ",会发现一处 "de ...
- 运维必须掌握的150个Linux命令
线上查询及帮助命令(1个)man 目录操作命令(6个)ls tree pwd mkdir rmdir cd 文件操作命令(7个)touch cp mv rm ln find rename 文件查看及处 ...
- 网站出现service unavailable的解决方法
特别提示:本文的教程仅适合采用windows服务器的IIS组件上操作,service unavailable是许多网站会经常遇到的问题,希望对大家有用. 昨天一小段时间网站出现了service una ...
- 插件lombok的介绍安装
Lombok插件 介绍一个不错的Eclipse插件Lombok 该插件对Log4j简化的代码,因为不大,所以jar包也存在呢! Lombox是Eclipse的一个插件,用来自动生成Java代码,减少手 ...
- 休息,归类一下CSS初级的东西
css基础的东西集中体现在了"磊盒子"这一个枯燥无味的东西上面,灵活的运用盒子的内外边距,浮动,定位以及一些基础的属性,将一个静态的页面变得磊出来,这是CSS基础的练习. 在css ...
- Spark之MapReduce原理
参考http://www.cnblogs.com/wuyudong/p/mapreduce-principle.html MapReduce 我们来拆开看: Mapping(映射)对集合里的每个目 ...