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 导入导出重点的更多相关文章

  1. poi excel导入导出

    pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artif ...

  2. Java POI Excel 导入导出

    这个东西很容易懂,不是特别难,难就难在一些复杂的计算和Excel格式的调整上. 近期写了一个小列子,放上来便于以后使用. POI.jar下载地址:http://mirror.bit.edu.cn/ap ...

  3. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  4. Java之POI的excel导入导出

    一.Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件.这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Offic ...

  5. 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出

    注 本文是使用 org.apache.poi 进行一次简单的封装,适用于大部分 excel 导入导出功能.过程中可能会用到反射,如若有对于性能有极致强迫症的同学,看看就好. 序 由于 poi 本身只是 ...

  6. SpringBoot集成文件 - 集成POI之Excel导入导出

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能.本文主要介绍通过Spr ...

  7. java简易excel导入导出工具(封装POI)

    Octopus 如何导入excel 如何导出excel github项目地址 Octopus Octopus 是一个简单的java excel导入导出工具. 如何导入excel 下面是一个excel文 ...

  8. Octopus——excel导入导出工具

    Octopus Octopus是一个简易的Excel导入导出工具.目前主要就两个功能: 导入:将excel中一行数据转换为指定的java对象,并通过指定的正则表达式检查合法性. 导出:按照给定的xml ...

  9. 土制Excel导入导出及相关问题探讨

    转载请注明出处https://www.cnblogs.com/funnyzpc/p/10392085.html 新的一年,又一个开始,不见收获,却见年龄,好一个猪年,待我先来一首里尔克的诗: < ...

随机推荐

  1. 生命周期(初始化、销毁方法、BeanPostProcessor后处理Bean)

    1.初始化和销毁 在目标方法执行前后进行初始化或销毁 (1)在Service方法的实现类里面创建初始化方法和销毁方法: public class StudentServiceImpl implemen ...

  2. JELLY技术周刊 Vol.24 -- 技术周刊 &#183; 实现 Recoil 只需百行代码?

    蒲公英 · JELLY技术周刊 Vol.24 理解一个轮子最好的方法就是仿造一个轮子,很多框架都因此应运而生,比如面向 JS 开发者的 AI 工具 Danfo.js:参考 qiankun 的微前端框架 ...

  3. Salesforce LWC学习(二十七) File Upload

    本篇参考: https://developer.salesforce.com/docs/component-library/bundle/lightning-file-upload/documenta ...

  4. Centos-修改文件访问和修改时间-touch

    touch 如果文件存在,则改变文件的访问时间和修改时间,如果不存在则创建一个空文件 相关选项 -a   更改文件访问时间为当前系统时间 -m     更改文件修改时间为当前系统时间 -c   如果文 ...

  5. [VBA原创源代码] excelhome 对花名册进行分类

    最近在学习<菜鸟谈VBA最最基础入门<原创>>,其中第22节有一个VBA编程作业,实现对花名册进行分类. 自己花了点时间,自己丫丫学步,终于实现出来. 在原创聚集地cnblog ...

  6. Nuget管理自己的项目库

    Nuget是什么 Nuget 是一种 Visual Studio 扩展工具,它能够简化在 Visual Studio 项目中添加.更新和删除库(部署为程序包)的操作.(官方地址)相信大家对这个应该还是 ...

  7. CentOS 7安装Nginx 1.10.2

    安装epel-release源并进行安装 yum install epel-release yum update(时间会有点长) yum install nginx 相关操作: systemctl s ...

  8. Arduino - 串口操作函数与示例代码大全

    来源:https://blog.csdn.net/iracer/article/details/50334041 Arduino - 串口操作函数与示例代码大全 本文总结了Arduino常用串口操作函 ...

  9. P5858 「SWTR-03」Golden Sword

    题面: Link 题面有点长,不想粘了,QAQ. 题解: 一句话题意,你有 \(n\) 件物品需要依次放进去,每个物品放进去之后会得到一定的权值,为当前锅炉里面的物品的数量乘以 \(a_i\) 每次在 ...

  10. 详解Class加载过程

    1.Class文件内容格式 2.一个class文件是被加载到内存的过程是怎样的? loading 把一个class文件装到内存里,class文件是一个二进制,一个个的字节 linking Verifi ...