1 POI读取excel
Apache的POI组件是Java操作Microsoft Office办公套件的强大API,其中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel,因为Word和PowerPoint用程序动态操作的应用较少。那么本文就结合POI来介绍一下操作Excel的方法。
Office 2007的文件结构完全不同于2003,所以对于两个版本的Office组件,POI有不同的处理API,分开使用即可。首先来说几个Excel的基本概念。对于一个Excel文件,这称为一个工作簿(Workbook),打开Excel之后,在下方会有sheet1/2/3这样的选项卡,点击可以切换到不同的sheet中,这个sheet称作工作表。每个工作表就是我们编辑的区域,这是一张二维表,阿拉伯数字控制行数,从1开始,而程序中还是0,类似数组和集合。字母控制列数,从A开始,Z以后是两个字母控制。对于每一行,我们称为Row,列就是Column,行列可以确定唯一的一个元素,那么就是单元格,称为Cell。
下面从读取Excel开始,首先建立一个Excel 2003以下版本的xls文件。设定几列来看。来存储学生信息的Excel表如下:
姓名 | 性别 | 年龄 |
张三 | 男 | 20 |
李四 | 女 | 23 |
王五 | 男 | 22 |
这里的姓名,性别和班级是文本值,而年龄和成绩是数字值,这在设计对象和处理时要注意区分。那么可以如下设计这个对象:
创建student类
package poi_test;
/**
* 学生类
* @author Administrator
*
*/
publicclass student {
private String name;//姓名
private String sex;//性别
privateintage;//年龄
public student(){
}
public student(String name, String sex, int age){
this.name=name;
this.sex=sex;
this.age=age;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
public String getSex() {
returnsex;
}
publicvoid setSex(String sex) {
this.sex = sex;
}
publicint getAge() {
returnage;
}
publicvoid setAge(int age) {
this.age = age;
}
public String getInfo(){
return"student info:"+name+" "+sex+" "+age;
}
}
以下读取excel
package poi_test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* 读取excel
* @author Administrator
*
*/
publicclass readExcel {
privatestatic String xls2003="C:\\student.xls";
privatestatic String xls2007="C:\\student.xlsx";
privatestatic List<student> readfromexcel2003(String filePath){
File excelFile = null;//excel文件对象
InputStream is = null;//输入流
String cellStr = null;//单元格的值
List<student> studentlist = new ArrayList<student>();
student student = null;
try{
excelFile = new File(filePath);
is = new FileInputStream(excelFile);
HSSFWorkbook workbook2003 = new HSSFWorkbook(is);//创建excel文件对象
HSSFSheet sheet = workbook2003.getSheetAt(0);//取出第一个工作表
int rows = sheet.getLastRowNum();//一共有多少行
for (int i = 1; i <= rows; i++) {
//不处理表头所以从1开始
student = new student();
HSSFRow row = sheet.getRow(i);// 获取行信息
if(row==null){
continue;
}
int cellnums = row.getLastCellNum();//没一行有多少列即多少单元格
for (int j = 0; j < cellnums; j++) {
HSSFCell cell = row.getCell(j);
if(cell==null){
cellStr = "";
}elseif (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {// 对布尔值的处理
cellStr = String.valueOf(cell.getBooleanCellValue());
} elseif (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {// 对数字值的处理
cellStr = cell.getNumericCellValue() + "";
} else {
cellStr = cell.getStringCellValue();
}
if(j==0){
student.setName(cellStr);
}elseif(j==1){
student.setSex(cellStr);
}else{
student.setAge(new Double(cellStr).intValue());
}
}
studentlist.add(student);
}
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}finally{
if(is!=null){
try{
is.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
return studentlist;
}
publicstaticvoid main(String[] args) {
long start = System.currentTimeMillis();
List<student> list = readfromexcel2003(xls2003);
for (student stu : list) {
System.out.println(stu.getInfo());
}
long end = System.currentTimeMillis();
System.out.println((end - start) + " ms done!");
}
}
2 POI写入excel数据
下面来做简单的文件写入,也就是准备输入写入Excel文件,为了演示,直接创建对象,而实际应用中数据可以是来自数据库的。写入文件就是文件解析的逆过程。但POI的组件不是从单元格开始创建文件的,还是从工作簿开始创建,进而创建工作表,行和单元格,最终将整个工作簿写入文件,完成操作。
package poi_test;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
publicclass writeExcel {
privatestatic String xls2003="d:\\student.xls";
privatestatic String xls2007="d:\\student.xlsx";
privatestatic List<student> studentList = null;
privatestatic student[] students = new student[4];
/**
* 静态块初始化数据
*/
static {
studentList = new ArrayList<student>();
students[0] = new student("张三", "男", 23);
students[1] = new student("李四", "女", 20);
students[2] = new student("王五", "男", 21);
students[3] = new student("赵六", "女", 22);
studentList.addAll(Arrays.asList(students));
}
/**
* 写入excel数据
* @param filePath
*/
publicstaticvoid writeExcel2003(String filePath) {
// 先创建工作簿对象
HSSFWorkbook workbook2003 = new HSSFWorkbook();
// 创建工作表对象并命名
HSSFSheet sheet = workbook2003.createSheet("学生信息统计表");
sheet.setDefaultColumnWidth(30);//设置单元格宽度
sheet.setDefaultRowHeightInPoints(40);//设置单元格默认高度
HSSFRow row1 = sheet.createRow(0);
row1.setHeight((short)300);
HSSFCell nameCellone = row1.createCell(0);
nameCellone.setCellValue("姓名");
HSSFCell sexCellone = row1.createCell(1);
sexCellone.setCellValue("性别");
HSSFCell ageCellone = row1.createCell(2);
ageCellone.setCellValue("年龄");
for (int i = 1; i <=studentList.size(); i++) {
// 取出Student对象
student student = studentList.get(i-1);
// 创建行
HSSFRow row = sheet.createRow(i);
// 开始创建单元格并赋值
HSSFCell nameCell = row.createCell(0);
nameCell.setCellValue(student.getName());
HSSFCell sexCell = row.createCell(1);
sexCell.setCellValue(student.getSex());
HSSFCell ageCell = row.createCell(2);
ageCell.setCellValue(student.getAge());
}
// 生成文件
File file = new File(filePath);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
workbook2003.write(fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* @param args
*/
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
long start = System.currentTimeMillis();
writeExcel2003(xls2003);
long end = System.currentTimeMillis();
System.out.println((end - start) + " ms done!");
}
}
相关推荐
要实现"利用POI读取excel写入到word",我们需要以下步骤: 1. **准备环境**:首先,确保你的项目已经引入了Apache POI的依赖。在给定的压缩包中,"poi - 副本"可能是包含POI库的JAR文件,你需要将其添加到你的项目...
这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL查看数据库 在MYSQL中运行项目db目录下的sql文件,创建...
使用poi读取写入复杂excel内容包括样式,工具类
在本文中,我们将深入探讨如何使用Apache POI读取Excel表格内容。 首先,我们需要理解Apache POI的基本架构。POI分为两个主要部分:HSSF(Horizontally-Scalable Storage Format)用于处理旧版的BIFF格式Excel文件...
本文将深入探讨如何使用Jxl和Apache POI库来读取和写入Excel文件,同时会区分2007年之后的.xlsx格式(基于OpenXML)和2003及之前的.xls格式(基于BIFF)。 首先,让我们了解一下Jxl库。Jxl是Java Excel API的简称,...
在Java编程环境中,如果你需要读取或写入Excel文件,POI 提供了强大的支持。本教程将深入讲解如何使用POI的HSSF组件来处理Excel 97-2003格式的文件(BIFF8格式)。 一、Excel基础 Excel 97 文件格式,也被称作BIFF8...
以下是一个简单的读取Excel文件的示例: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import ...
标题提到的"poi读取excel文件",指的是使用Apache POI库来处理Excel数据。在最新的版本中,POI引入了更高效和强大的功能,使得处理Excel文件变得更加方便。 描述中提到了"最新版poi相关的6个jar包",这些jar包是...
1、POI_EXCEL包下分别有两个类,一个是读取excel内容,一个是想excel写入内容 2、cn.itcast包下的所有包,是为了实现从excel写入到数据库中,和从数据库写入到excel中 注意事项: 1、需要导入maven工程 2、使用...
标题中的“poi读取excel并输出到jsp页面”是指使用Apache POI库来处理Microsoft Excel文件,并将数据在JavaServer Pages (JSP) 页面上显示的技术。Apache POI 是一个开源项目,它允许开发者创建、修改和显示MS ...
**POI读取Excel** 读取Excel主要涉及以下步骤: 1. **打开Workbook**:通过 FileInputStream 读取Excel文件,然后创建Workbook对象。 2. **获取Sheet**:从Workbook中获取需要的Sheet。 3. **遍历Row和Cell**:...
Apache POI 是一个开源项目,专门用于处理 Microsoft Office 格式的文件,如 Word、Excel 和 PowerPoint。在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效...
在Android平台上,使用Apache POI库来读取Excel文件是一种常见的解决方案。Apache POI是一个流行的开源项目,它允许程序员创建、修改和显示Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。在这个“android ...
这篇博客“通过POI统一读取Excel文件(兼容97-2003和2007+两种格式)”正是介绍了如何使用Apache POI库来处理不同版本的Excel文件。 Apache POI 提供了两个主要的API来处理Excel文件:HSSF(Horrible Spreadsheet ...
在标题中提到的“poi 3.9读取excel xls xlsx 有jar包”,指的是使用Apache POI 3.9版本来读取Excel的工作簿(XLS和XLSX格式)。这个版本的POI包含了处理Excel文件所需的核心组件。 Apache POI 提供了HSSF(Horrible...
标题提到的“poi读取Excel用到的jar包”指的是在Java项目中使用POI库进行Excel操作所需引入的依赖文件。这些jar包在描述中给出,包括了以下几个: 1. poi-ooxml-schemas-3.8-beta5-20111217.jar:这个文件包含了...
在Java环境中,如果你需要使用POI库来读取、写入或操作Excel文件,你需要确保你的项目中包含了正确的JAR文件。在这个场景中,你提到的几个JAR文件都是Apache POI的不同版本和组件: 1. **poi-3.8.jar**:这是Apache...
利用Apache POI库能够实现这一功能,即可以通过Java程序操作Excel文件,包括读取、写入、以及处理Excel中的公式。 #### 二、关键技术点 1. **POI库简介**: - Apache POI是Apache软件基金会的Jakarta项目中的一个...
二、读取Excel文件 1. 创建Workbook对象:通过`WorkbookFactory.create()`方法,我们可以根据文件路径或输入流创建对应的Workbook对象,无论是XLS还是XLSX。 2. 访问Sheet和Row:Workbook对象包含了多个Sheet,每...
#### 三、使用 POI 创建和读取 Excel 文件 为了使用 POI 操作 Excel 文件,首先需要准备以下环境: 1. **JDK 版本**:至少需要 JDK 1.4 或更高版本。 2. **POI 库**:下载 POI 库,可以从 Apache 官方网站获取:...