1.添加maven依赖

        <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>

2.读取和创建2003和2007版本Excel示例

 package com.wyg.simple;

 import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class CreatAndReadExcel {
private static String excel2007Path = "D:\\temp\\style_2007.xlsx";
private static String excel2003Path = "D:\\temp\\style_2003.xls"; public static void main(String[] args) throws Exception {
creatExcel(excel2007Path, "2007");// 创建2007版Excel文件
creatExcel(excel2003Path,"2003");// 创建2003版Excel文件 // List<List<Object>> excel2007List = readExcel(excel2007Path);// 读取2007版Excel文件
List<List<Object>> excel2003List = readExcel(excel2003Path);// 读取2003版Excel文件
System.out.println(excel2003List.toString());
} /**
* 创建Excel文件
*
* @return
* @throws IOException
*/
public static void creatExcel(String excelPath, String version) throws IOException {
// XSSFWork used for .xslx (>=2007), HSSWorkbook for 03 .xsl
Workbook workbook = null;
if (version.equals("2007")) {
workbook = new XSSFWorkbook();// 创建 一个excel文档对象
} else if (version.equals("2003")) {
workbook = new HSSFWorkbook();// 创建 一个excel文档对象
}
Sheet sheet = workbook.createSheet("2007sheet");// 创建一个工作薄对象
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为 Row row0 = sheet.createRow(1);// 创建一个行对象,从0行开始
row0.setHeightInPoints(23);// 设置行高23像素
for (int i = 0; i < 11; i++) {
Cell cell_1 = row0.createCell(i, Cell.CELL_TYPE_STRING);// 创建单元格,从0列开始
cell_1.setCellValue("column" + i);// 写入单元格的值
CellStyle style = getStyle(workbook);
cell_1.setCellStyle(style);// 应用样式对象
sheet.autoSizeColumn(i);// 自动调整列宽
} FileOutputStream outputStream = new FileOutputStream(excelPath);
workbook.write(outputStream);// 将文档对象写入文件输出流 outputStream.close();// 关闭文件输出流
System.out.println("创建成功 office excel");
} /**
* 设置样式
*
* @param workbook
* @return
*/
private static CellStyle getStyle(Workbook workbook) {
CellStyle style = workbook.createCellStyle();// 创建样式对象
// 设置对齐方式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中 // 设置边框
style.setBorderTop(HSSFCellStyle.BORDER_THICK);// 顶部边框粗线
style.setTopBorderColor(HSSFColor.RED.index);// 设置为红色
style.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);// 底部边框双线
style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);// 左边边框
style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);// 右边边框 style.setWrapText(true);// 设置单元格内容是否自动换行
// 格式化日期
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); // 设置单元格字体
Font font = workbook.createFont(); // 创建字体对象
font.setFontHeightInPoints((short) 14);// 设置字体大小
font.setColor(HSSFColor.RED.index);// 设置字体颜色
font.setFontName("宋体");// 设置为宋体字
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置粗体
style.setFont(font);// 将字体加入到样式对象 return style;
} /**
* 读取excel
*
* @param fileName
* @return 行<列>
* @throws IOException
*/ private static List<List<Object>> readExcel(String fileName) throws IOException {
File file = new File(fileName);
Workbook wb = null;
if (fileName.endsWith(".xlsx")) {//
wb = new XSSFWorkbook(new FileInputStream(file));// 创建 一个excel文档对象
} else if (fileName.endsWith(".xls")) {//
wb = new HSSFWorkbook(new FileInputStream(file));// 创建 一个excel文档对象
} Sheet sheet = wb.getSheetAt(0);// 读取第一个sheet页表格内容
Object value = null;
Row row = null;
Cell cell = null;
System.out.println("读取office 2007 excel内容如下:");
// System.out.println(sheet.getPhysicalNumberOfRows());// 获取的是物理行数,也就是不包括那些空行(隔行)的情况。
// System.out.println(sheet.getLastRowNum());// 获取的是最后一行的编号(编号从0开始)
// 行
List<List<Object>> rowlist = new LinkedList<List<Object>>();
for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) {
row = sheet.getRow(i);
if (row == null) {
continue;
} // 列
List<Object> cellList = new LinkedList<Object>();
for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
cell = row.getCell(j);
if (cell == null) {
continue;
} DecimalFormat df = new DecimalFormat("0");// 格式化 number String
DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
switch (cell.getCellType()) {
case XSSFCell.CELL_TYPE_STRING:// 字符串——String type
value = cell.getStringCellValue();
break;
case XSSFCell.CELL_TYPE_NUMERIC:// 数字——Number type
if ("@".equals(cell.getCellStyle().getDataFormatString())) {
value = df.format(cell.getNumericCellValue());
} else if ("General".equals(cell.getCellStyle().getDataFormatString())) {
value = nf.format(cell.getNumericCellValue());
} else {
value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
}
break;
case XSSFCell.CELL_TYPE_BOOLEAN:// boolean——Boolean type
value = cell.getBooleanCellValue();
break;
case XSSFCell.CELL_TYPE_BLANK:// 空白——Blank type
value = "";
break;
default:// default type
value = cell.toString();
}
if (value == null || "".equals(value)) {
continue;
}
cellList.add(value);
}
rowlist.add(cellList);
}
return rowlist;
}
}

JAVA用POI读取和创建2003和2007版本Excel的更多相关文章

  1. JAVA用POI读取和创建2003和2007版本Excel完美示例

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  2. Java之POI读取Excel的Package should contain a content type part [M1.13]] with root cause异常问题解决

    Java之POI读取Excel的Package should contain a content type part [M1.13]] with root cause异常问题解决 引言: 在Java中 ...

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

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

  4. Java使用POI读取和写入Excel指南

    Java使用POI读取和写入Excel指南 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃 ...

  5. POI 读取word (word 2003 和 word 2007)(转,好用)

    POI 读取word (word 2003 和 word 2007)(转,好用) 转做的操作: 将作者文中失效的链接的正确链接放在失效链接的下面. 最近在给客户做系统的时候,用户提出需求,要能够导入 ...

  6. java使用poi读取ppt文件和poi读取excel、word示例

    java使用poi读取ppt文件和poi读取excel.word示例 http://www.jb51.net/article/48092.htm

  7. java使用poi读取doc和docx文件(maven自动导入依赖包)

    java使用poi读取doc和docx文件(maven自动导入依赖包) 于是在网上搜寻了一阵之后才发现原来doc文档和excel一样不能用普通的io流的方法来读取,而是也需要用poi,于是进行了一番尝 ...

  8. java使用poi读取word(简单,简约,直观)

    java使用poi读取word(简单,简约,直观) 说明 其实poi的官网上面都是有接口和样例的,只是都是英文 例如网址:http://poi.apache.org/spreadsheet/quick ...

  9. 【Java POI】POI基于事件驱动解析大数据量2007版本Excel,空值导致列错位问题

    1.目前测试了20M的文件,可以读取. 2.支持单个工作表1万+的数据行数,耗时如图. 3.以下是关键地方处理的代码 //Accepts objects needed while parsing. / ...

随机推荐

  1. 爬虫实例——通过JS控制滚动条

    案例 某位淘女郎的某个相册 有能力的童鞋可以先尝试一下爬取每张照片的链接. 我曾经尝试过几种方法,下面一一介绍: 第一种方法,采用requests和BeautifulSoup: import requ ...

  2. mysql的concat用法

    问题提出:mybatis的mapper文件中的模糊查询: mysql CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一,下面就将为您详细介绍mysql CONCAT( ...

  3. ACM.hdu1025

    to get the ans of how many roads at most that can be built between two line without intersection of ...

  4. Qt中内存泄露和退出崩溃的问题 delete

    Qt中帮程序员做了一些内存回收的事情,但正因为这些反而让对此不熟悉的人会屡屡犯错. 收录一篇不错的文章: 在C++中学习过程中,我们都知道: delete 和 new 必须 配对使用(一 一对应):d ...

  5. SQL Server2000安装教程图解

    sql2000安装教程图解... ================================= 第一部分:下载所需要的安装包: 可以自己在网上百度了之后下载--或是直接从我已打包好的群里下载 = ...

  6. mysql连接时权限问题 用户问题

    启动工程时会连接mysql数据库,此时报错: ERROR 1044 (42000): Access denied for user 'pay'@'localhost' to database 'pay ...

  7. RabbitMQ的使用总结

    RabbitMQ介绍 说明: Consumer (消费者):使用队列 Queue 从 Exchange 中获取消息的应用. Exchange (交换机):负责接收生产者的消息并把它转到到合适的队列. ...

  8. 【SPOJ】2319 BIGSEQ - Sequence

    [算法]数位DP [题解]动态规划 题目要求的是大整数……没办法只写了小数字的,感觉应该没错. 大题框架是最大值最小化的二分问题. 对于每一块要求count(b)-count(a-1)≥s 已知a如何 ...

  9. Yii2实现读写分离(MySQL主从数据库)

    读写分离(Read/Write Splitting). 1.原理: 让主数据库(master)处理事务性增.改.删操作(INSERT.UPDATE.DELETE),而从数据库(slave)处理SELE ...

  10. 7.0docker镜像和仓库

    repository:镜像的仓库 registry :docker组件的仓库,docker镜像的存储服务 tag :镜像的标签 例:ubuntu:14.04  ubuntu:latest 删除镜像 d ...