POI读取/写入Excel文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
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;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; /**
*
* @Description :POI读取/创建Excel文件
* @author : James
* @version : 1.0
* @Date : 2016年3月2日 下午2:18:27
*/
public class ExcelManager { private HSSFWorkbook hssfWorkbook;
private XSSFWorkbook xssfWorkbook; /**
* 读取Excel2010版
*
* @param inputStream输入流
* @return
*/
public List<String[]> readXlsx(InputStream inputStream) {
List<String[]> result = new ArrayList<>();
try {
xssfWorkbook = new XSSFWorkbook(inputStream);
for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
if (xssfSheet == null) {
continue;
}
for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
if (xssfRow != null) {
String[] row = new String[xssfSheet.getRow(1).getLastCellNum()]; // 以第一列值行为标准
for (int i = 0; i < row.length; i++) {
row[i] = getValue(xssfRow.getCell(i));
}
result.add(row);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
} /**
* 读取Excel2003/2007版
*
* @param inputStream输入流
* @return
*/
public List<String[]> readXls(InputStream inputStream) {
List<String[]> result = new ArrayList<>();
try {
hssfWorkbook = new HSSFWorkbook(inputStream);
for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow != null) {
String[] row = new String[hssfSheet.getRow(1).getLastCellNum()];
for (int i = 0; i < row.length; i++) {
row[i] = getValue(hssfRow.getCell(i));
}
result.add(row);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
} public List<String[]> readXlsx(File file) {
List<String[]> result = new ArrayList<>();
try {
xssfWorkbook = new XSSFWorkbook(file);
for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
if (xssfSheet == null) {
continue;
}
for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
if (xssfRow != null) {
String[] row = new String[xssfSheet.getRow(1).getLastCellNum()]; // 以第一列值行为标准
for (int i = 0; i < row.length; i++) {
row[i] = getValue(xssfRow.getCell(i));
}
result.add(row);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
} private String getValue(XSSFCell xssfRow) {
if (xssfRow == null)
return "";
if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) {
return String.valueOf(xssfRow.getBooleanCellValue());
} else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) {
return String.valueOf(xssfRow.getNumericCellValue());
} else {
return String.valueOf(xssfRow.getStringCellValue().trim());
}
} private String getValue(HSSFCell hssfCell) {
if (hssfCell == null)
return "";
if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
return String.valueOf(hssfCell.getBooleanCellValue());
} else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
return String.valueOf(hssfCell.getNumericCellValue());
} else {
return String.valueOf(hssfCell.getStringCellValue().trim());
}
} /**
* 重新创建新Excel文件
*
* @return
*/
public String createNewExcel(File file, String newFilePath, String[] title) {
try {
InputStream inputStream = new FileInputStream(file);
// 文件类型
String fileType = file.getName().substring(file.getName().lastIndexOf(".") + 1, file.getName().length());
List<String[]> objList = null;
if ("xlsx".equals(fileType)) {
objList = readXlsx(inputStream);
} else if ("xls".equals(fileType)) {
objList = readXls(inputStream);
}
// 创建Excel的工作书册 Workbook,对应到一个excel文档
XSSFWorkbook wb = new XSSFWorkbook();
// 创建Excel的工作sheet,对应到一个excel文档的tab
XSSFSheet sheet = wb.createSheet("sheet1");
sheet.setColumnWidth(0, 5500);// 设置单元格宽度,这里设置第一列的宽度
XSSFRow firstRow = sheet.createRow(0);
// 设置字体
XSSFFont font = wb.createFont();
font.setBold(true);// 粗体字
font.setColor(HSSFColor.RED.index);
font.setFontName("宋体");
// 设置单元格属性
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setFont(font);// 设置字体
cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);
cellStyle.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
// 生成表头
for (int i = 0; i < title.length; i++) {
XSSFCell cell = firstRow.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(cellStyle);// 设置单元格背景
}
// 生成数据
for (int i = 0; i < objList.size(); i++) {
String[] lineObj = objList.get(i);
XSSFRow row = sheet.createRow(i + 1);// 因为表头已经占用了第一行,所以后面生成的行需从第二行开始
for (int j = 0; j < lineObj.length; j++) {
XSSFCell cell = row.createCell(j);
cell.setCellValue(lineObj[j].toString());
}
}
FileOutputStream os = new FileOutputStream(newFilePath);
wb.write(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
} public static void main(String[] args) {
String[] title = { "姓名", "年龄", "性别", "岗位", "入职年份" };
ExcelManager em = new ExcelManager();
em.createNewExcel(new File("D:\\用户信息.xlsx"), "D:\\new_excel.xlsx", title);
} }
效果图
原Excel文件:

生成后:

POI读取/写入Excel文件的更多相关文章
- Java入门开发POI读取导入Excel文件
Apache POI是Apache开发的开源的跨平台的 Java API,提供API给Java程序对Microsoft Office格式档案进行各种操作. POI中Excel操作很简单,主要类有 HS ...
- Java poi读取,写入Excel,处理row和cell可能为空的情况
首先需要导入包 import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.NP ...
- java写入excel文件poi
java写入excel文件 java写入excel文件poi,支持xlsx与xls,没有文件自动创建 package com.utils; import java.io.File; import ja ...
- Apache POI 实现对 Excel 文件读写
1. Apache POI 简介 Apache POI是Apache软件基金会的开放源码函式库. 提供API给Java应用程序对Microsoft Office格式档案读和写的功能. 老外起名字总是很 ...
- 根据NPOI 读取一个excel 文件的多个Sheet
大家都知道NPOI组件可以再你本地没有安装office的情况下来 读取,创建excel文件.但是大家一般都是只默认读取一个excel文件的第一个sheet.那么如果要读取一个excel 的所有shee ...
- 从网络上获取图片,并写入excel文件
package com.weChat.utils; import com.manage.utils.DateUtil;import com.manage.utils.MD5Util;import or ...
- python pandas写入excel文件
pandas读取.写入csv数据非常方便,但是有时希望通过excel画个简单的图表看一下数据质量.变化趋势并保存,这时候csv格式的数据就略显不便,因此尝试直接将数据写入excel文件. pandas ...
- Delphi数据库数据用文件流方式快速写入Excel文件
在开发数据库应用程序中,经常要将类型相同的数据导出来,放到Excel文件中,利用Excel强大的编辑功能,对数据作进一步的加工处理.这有许多的方法,我们可以使用OLE技术,在Delphi中创建一个自动 ...
- Java poi读取,写入Excel2003
Java poi读取,写入Excel2003 相关阅读:poi读写Excel2007:http://www.cnblogs.com/gavinYang/p/3576741.htmljxl读写excel ...
随机推荐
- Linux命令行–初识Linux shell
shell及脚本简介 GNU/Linux shell 是个交互工具,它为用户提供了启动程序.管理文件系统上的文件以及管理运行在Linux系统上的进程的途径 . shell的核心是命令行提示符 它是s ...
- 在Visual Studio 2015中运行OPENGL
Starting an OpenGL project in VS 2015 is really easy, thanks to the NupenGL.Core nuget package. Here ...
- category应用(计算nssting的数量)
// // main.m // 03-分类应用 // // Created by apple on 14-3-18. // Copyright (c) 2014年 apple. All rig ...
- Collections的排序之一(Java)
package home.collection.arr; import java.util.ArrayList; import java.util.Collections; import java.u ...
- Mysql主从库同步错误:1062 Error 'Duplicate entry '1438019'
mysql主从库同步错误:1062 Error 'Duplicate entry '1438019' for key 'PRIMARY'' on query mysql主从库在同步时会发生1062 L ...
- 别人写的一个Bootstrap系列教程
http://www.cnblogs.com/lansy/category/659061.html
- PostgreSQL simple select(group by and insert into ...select)
warehouse_db=# create table student(number int primary key,name varchar(20),age int);CREATE TABLEwar ...
- jsp eclipse 创建jsp项目
选择File菜单 File->new->Other... 选择Dynamic Web Project项目->Next 写入项目->Finish 在WebContent鼠标右键- ...
- c++ 中this底层
成员变量设置在一个结构体中, 操作成员变量的成员函数,其实质上就是拥有一个隐藏的 成员变量结构体的地址指针,俗称this指针.
- Java实现找出数组中重复次数最多的元素以及个数
/**数组中元素重复最多的数 * @param array * @author shaobn * @param array */ public static void getMethod_4(int[ ...