POI Excel 导入导出重点
HSSF是指2007年以前的,XSSF是指2007年版本以上的
这个还是比较好用的,这些总结来自Apache的官方向导的点点滴滴
详细的请参考http://poi.apache.org/spreadsheet/quick-guide.html
1.导出excel:
1 package test.worksheet;
2
3 import java.io.File;
4 import java.io.FileOutputStream;
5 import java.io.IOException;
6 import java.io.OutputStream;
7 import java.util.Date;
8
9 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
10 import org.apache.poi.hssf.util.HSSFColor;
11 import org.apache.poi.ss.usermodel.Cell;
12 import org.apache.poi.ss.usermodel.CellStyle;
13 import org.apache.poi.ss.usermodel.CreationHelper;
14 import org.apache.poi.ss.usermodel.Font;
15 import org.apache.poi.ss.usermodel.IndexedColors;
16 import org.apache.poi.ss.usermodel.Row;
17 import org.apache.poi.ss.usermodel.Sheet;
18 import org.apache.poi.ss.usermodel.Workbook;
19
20 public class SummaryHSSF {
21 public static void main(String[] args) throws IOException {
22 //创建Workbook对象(这一个对象代表着对应的一个Excel文件)
23 //HSSFWorkbook表示以xls为后缀名的文件
24 Workbook wb = new HSSFWorkbook();
25 //获得CreationHelper对象,这个应该是一个帮助类
26 CreationHelper helper = wb.getCreationHelper();
27 //创建Sheet并给名字(表示Excel的一个Sheet)
28 Sheet sheet1 = wb.createSheet("HSSF_Sheet_1");
29 Sheet sheet2 = wb.createSheet("HSSF_Sheet_2");
30 //Row表示一行Cell表示一列
31 Row row = null;
32 Cell cell = null;
33 for(int i=0;i<60;i=i+2){
34 //获得这个sheet的第i行
35 row = sheet1.createRow(i);
36 //设置行长度自动
37 //row.setHeight((short)500);
38 row.setHeightInPoints(20);
39 //row.setZeroHeight(true);
40 for(int j=0;j<25;j++){
41 //设置每个sheet每一行的宽度,自动,根据需求自行确定
42 sheet1.autoSizeColumn(j+1, true);
43 //创建一个基本的样式
44 CellStyle cellStyle = SummaryHSSF.createStyleCell(wb);
45 //获得这一行的每j列
46 cell = row.createCell(j);
47 if(j==0){
48 //设置文字在单元格里面的位置
49 cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
50 //先创建字体样式,并把这个样式加到单元格的字体里面
51 cellStyle.setFont(createFonts(wb));
52 //把这个样式加到单元格里面
53 cell.setCellStyle(cellStyle);
54 //给单元格设值
55 cell.setCellValue(true);
56 }else if(j==1){
57 //设置文字在单元格里面的位置
58 cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
59 //设置这个样式的格式(Format)
60 cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "#,##0.0000");
61 //先创建字体样式,并把这个样式加到单元格的字体里面
62 cellStyle.setFont(createFonts(wb));
63 //把这个样式加到单元格里面
64 cell.setCellStyle(cellStyle);
65 //给单元格设值
66 cell.setCellValue(new Double(2008.2008));
67 }else if(j==2){
68 cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
69 cellStyle.setFont(createFonts(wb));
70 cell.setCellStyle(cellStyle);
71 cell.setCellValue(helper.createRichTextString("RichString"+i+j));
72 }else if(j==3){
73 cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
74 cellStyle = SummaryHSSF.setCellFormat(helper,cellStyle, "YYYY-MM-DD");
75 cell.setCellStyle(cellStyle);
76 cell.setCellValue(new Date());
77 }else if(j==24){
78 cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
79 cellStyle.setFont(createFonts(wb));
80 //设置公式
81 cell.setCellFormula("SUM(E"+(i+1)+":X"+(i+1)+")");
82 }else{
83 cellStyle = SummaryHSSF.setCellStyleAlignment(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
84 cellStyle = SummaryHSSF.setFillBackgroundColors(cellStyle,IndexedColors.ORANGE.getIndex(),IndexedColors.ORANGE.getIndex(),CellStyle.SOLID_FOREGROUND);
85 cell.setCellStyle(cellStyle);
86 cell.setCellValue(1);
87 }
88 }
89 }
90 //输出
91 OutputStream os = new FileOutputStream(new File("c://SummaryHSSF.xls"));
92 wb.write(os);
93 os.close();
94 }
95
96 public static CellStyle createStyleCell(Workbook wb){
97 CellStyle cellStyle = wb.createCellStyle();
98 //设置一个单元格边框颜色
99 cellStyle.setBorderBottom(CellStyle.BORDER_THIN);
100 cellStyle.setBorderTop(CellStyle.BORDER_THIN);
101 cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
102 cellStyle.setBorderRight(CellStyle.BORDER_THIN);
103 //设置一个单元格边框颜色
104 cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
105 cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
106 cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
107 cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
108 return cellStyle;
109 }
110
111 public static CellStyle setCellStyleAlignment(CellStyle cellStyle,short halign,short valign){
112 //设置上下
113 cellStyle.setAlignment(halign);
114 //设置左右
115 cellStyle.setVerticalAlignment(valign);
116 return cellStyle;
117 }
118
119 public static CellStyle setCellFormat(CreationHelper helper,CellStyle cellStyle,String fmt){
120 //还可以用其它方法创建format
121 cellStyle.setDataFormat(helper.createDataFormat().getFormat(fmt));
122 return cellStyle;
123 }
124
125 public static CellStyle setFillBackgroundColors(CellStyle cellStyle,short bg,short fg,short fp){
126 cellStyle.setFillBackgroundColor(bg);
127 cellStyle.setFillForegroundColor(fg);
128 cellStyle.setFillPattern(fp);
129 return cellStyle;
130 }
131
132 public static Font createFonts(Workbook wb){
133 //创建Font对象
134 Font font = wb.createFont();
135 //设置字体
136 font.setFontName("黑体");
137 //着色
138 font.setColor(HSSFColor.BLUE.index);
139 //斜体
140 font.setItalic(true);
141 //字体大小
142 font.setFontHeight((short)300);
143 return font;
144 }
145 }
2.导入excel:
1 package test.worksheet;
2
3
4 import java.io.File;
5 import java.io.FileInputStream;
6 import java.io.InputStream;
7
8 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
9 import org.apache.poi.ss.usermodel.Cell;
10 import org.apache.poi.ss.usermodel.DateUtil;
11 import org.apache.poi.ss.usermodel.Row;
12 import org.apache.poi.ss.usermodel.Sheet;
13 import org.apache.poi.ss.usermodel.Workbook;
14 import org.apache.poi.ss.usermodel.WorkbookFactory;
15
16 public class ReadExcel {
17 public static void main(String[] args) throws Exception {
18 InputStream is = new FileInputStream(new File("c://SummaryHSSF.xls"));
19 //根据输入流创建Workbook对象
20 Workbook wb = WorkbookFactory.create(is);
21 //get到Sheet对象
22 Sheet sheet = wb.getSheetAt(0);
23 //这个必须用接口
24 for(Row row : sheet){
25 for(Cell cell : row){
26 //cell.getCellType是获得cell里面保存的值的type
27 //如Cell.CELL_TYPE_STRING
28 switch(cell.getCellType()){
29 case Cell.CELL_TYPE_BOOLEAN:
30 //得到Boolean对象的方法
31 System.out.print(cell.getBooleanCellValue()+" ");
32 break;
33 case Cell.CELL_TYPE_NUMERIC:
34 //先看是否是日期格式
35 if(DateUtil.isCellDateFormatted(cell)){
36 //读取日期格式
37 System.out.print(cell.getDateCellValue()+" ");
38 }else{
39 //读取数字
40 System.out.print(cell.getNumericCellValue()+" ");
41 }
42 break;
43 case Cell.CELL_TYPE_FORMULA:
44 //读取公式
45 System.out.print(cell.getCellFormula()+" ");
46 break;
47 case Cell.CELL_TYPE_STRING:
48 //读取String
49 System.out.print(cell.getRichStringCellValue().toString()+" ");
50 break;
51 }
52 }
53 System.out.println("");
54 }
55 }
56 }
3.需要的包
poi-3.9-20121203.jar和poi-ooxml-3.7-20121029.jar
POI Excel 导入导出重点的更多相关文章
- poi excel导入导出
pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artif ...
- Java POI Excel 导入导出
这个东西很容易懂,不是特别难,难就难在一些复杂的计算和Excel格式的调整上. 近期写了一个小列子,放上来便于以后使用. POI.jar下载地址:http://mirror.bit.edu.cn/ap ...
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- Java之POI的excel导入导出
一.Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件.这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Offic ...
- 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出
注 本文是使用 org.apache.poi 进行一次简单的封装,适用于大部分 excel 导入导出功能.过程中可能会用到反射,如若有对于性能有极致强迫症的同学,看看就好. 序 由于 poi 本身只是 ...
- SpringBoot集成文件 - 集成POI之Excel导入导出
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能.本文主要介绍通过Spr ...
- java简易excel导入导出工具(封装POI)
Octopus 如何导入excel 如何导出excel github项目地址 Octopus Octopus 是一个简单的java excel导入导出工具. 如何导入excel 下面是一个excel文 ...
- Octopus——excel导入导出工具
Octopus Octopus是一个简易的Excel导入导出工具.目前主要就两个功能: 导入:将excel中一行数据转换为指定的java对象,并通过指定的正则表达式检查合法性. 导出:按照给定的xml ...
- 土制Excel导入导出及相关问题探讨
转载请注明出处https://www.cnblogs.com/funnyzpc/p/10392085.html 新的一年,又一个开始,不见收获,却见年龄,好一个猪年,待我先来一首里尔克的诗: < ...
随机推荐
- 记录jmeter使用beanshell断言获取复杂的json字符串参数值
实战示例 测试场景 电商系统经常会涉及到商品的库存数量的压测,在用户下单前需要先做库存余量的判断,当余量不足时用户无法下单,保证商品的有效售卖 库存余量查询响应结果 响应结果一般是json字符串的形式 ...
- spark-2-RDD
RDD提供了一个抽象的数据架构,我们不必担心底层数据的分布式特性,只需将具体的应用逻辑表达为一系列转换处理,不同RDD之间的转换操作形成依赖关系,可以实现管道化,从而避免了中间结果的存储,大大降低了数 ...
- makefile从入门到入门
makefile文件是用来帮助编译和管理C++项目代码的,需要配合make命令使用.makefile里也可以执行shell操作,具备一部分.sh脚本的功能. makefile格式 makefile内容 ...
- Android高级控件(下)
计时器(Chronometer) getBase() 基准时间 setFormat() 设置显示格式 start() 开始计时 stop() 停止计时 setOnChronometerListener ...
- 【记】《.net之美》之读书笔记(二) C#中的泛型
前言 上一篇读书笔记,很多小伙伴说这本书很不错,所以趁着国庆假期,继续我的读书之旅,来跟随书中作者一起温习并掌握第二章的内容吧. 一.理解泛型 1.为什么要使用泛型?-----通过使用泛型,可以极大地 ...
- Java安全之Commons Collections1分析前置知识
Java安全之Commons Collections1分析前置知识 0x00 前言 Commons Collections的利用链也被称为cc链,在学习反序列化漏洞必不可少的一个部分.Apache C ...
- mysql linux 命令行操作
1. 登录mysql mysql -u 用户名 -p 回车输入密码
- 将本地代码初始化上传到gitlab仓库
首先你已经安装了git. 1.在本地代码目录,鼠标右键Git Bash Here: 2.执行git命令,此命令会在当前目录下创建一个.git文件夹, git init 3.将项目的所有文件添加到仓库中 ...
- 超好用的UnixLinux 命令技巧 大神为你详细解读
1.删除一个大文件 我在生产服务器上有一个很大的200GB的日志文件需要删除.我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入: > /path/to/fi ...
- JAVA Schedule的Cron表达式
spring中用到的定时任务,一般用到的有Timer()和Schedule Cron表达式一般是程序的定时任务中所要起的..我们用的springboot中的@Schedule中,启动类中添加enabl ...