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 ...
随机推荐
- my dream
我的梦想(践踏一切可以践踏的,放弃一切必须放弃的,然后朝着自己认为的方向努力,只要自己认为对了就可以了(但是最好能考虑方面全一点,这就叫尽力了)我想要的生活怎么那么醉我想要的食物怎么那么碎我最爱的女孩 ...
- Windows环境下Android Studio安装和使用教程
Windows环境下Android Studio安装和使用教程 来源: http://www.cnblogs.com/liuhongfeng/archive/2015/12/30/5084896.ht ...
- Codeforces Round #378 (Div. 2)-C. Epidemic in Monstropolis
C. Epidemic in Monstropolis time limit per test 1 second memory limit per test 256 megabytes input s ...
- DOM Exception error
INDEX_SIZE_ERR code 1 索引是负值,或者超过了索引值 DOMSTRING_SIZE_ERR code 2 ...
- 在.csproj文件中增加npm, bower, gulp, webpack的构建
<Target Name="RunNpm" AfterTargets="AfterBuild"> <!-- As part of publ ...
- alert 执行顺序问题
<p><span id="span1">Hello World!</span></p> <script type=" ...
- 高阶函数,柯里化,sort排序
高阶函数概念 first class object: 函数在python中时一等公民. 函数也是对象,可调用的对象. 函数可以作为普通变量,参数,返回值等等. 高阶函数: ...
- 基于HTML5的WebGL经典3D虚拟机房漫游动画
第一人称在 3D 中的用法要参考第一人称在射击游戏中的使用,第一人称射击游戏(FPS)是以第一人称视角为中心围绕枪和其他武器为基础的视频游戏类型 ; 也就是说,玩家通过主角的眼睛来体验动作.自从流派开 ...
- 【Kafka源码】处理请求
[TOC] 在KafkaServer中的入口在: apis = new KafkaApis(socketServer.requestChannel, replicaManager, groupCoor ...
- PHP设计模式之工厂模式
工厂模式(Factory pattern)和单例模式一样,是另外一种创建型模式. 和单例模式不同的是,单例模式会创建和管理一个单独的类型的单一对象,工厂模式则是用于创建多种不同类型的类的多个对象. 工 ...