java利用poi生成/读取excel表格
1.引入jar包依赖
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- <version>3.9</version>
- </dependency>
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-ooxml</artifactId>
- <version>3.8</version>
- </dependency>
2.编写代码测试
- package testweb;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.util.LinkedList;
- import java.util.List;
- import org.apache.poi.hssf.usermodel.HSSFCell;
- import org.apache.poi.hssf.usermodel.HSSFCellStyle;
- import org.apache.poi.hssf.usermodel.HSSFFont;
- import org.apache.poi.hssf.usermodel.HSSFRichTextString;
- 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;
- public class TestExcel {
- public static void main(String[] args) {
- List<Object> l=new LinkedList<>();
- l.add("zs");
- l.add("ls");
- l.add("we");
- l.add("mz");
- String[] headers=new String[]{"tou1","tou2","tou3","tou4"};
- try {
- OutputStream o= new FileOutputStream(new File("C:/Users/yanan/Desktop/yanantest.xls"));
- exportDataExcel("nihao",headers,l,o);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- }
- protected static void exportDataExcel(String title,String[] headers,List<Object> mapList,OutputStream out){
- //声明一个工作簿
- HSSFWorkbook workbook = new HSSFWorkbook();
- //生成一个表格
- HSSFSheet sheet = workbook.createSheet(title);
- //设置表格默认列宽度字符
- sheet.setDefaultColumnWidth(20);
- //生成一个样式,用来设置标题样式
- HSSFCellStyle style = workbook.createCellStyle();
- //设置这些样式
- style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
- style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
- style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
- style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
- style.setBorderRight(HSSFCellStyle.BORDER_THIN);
- style.setBorderTop(HSSFCellStyle.BORDER_THIN);
- style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
- //生成一个字体
- HSSFFont font = workbook.createFont();
- font.setColor(HSSFColor.VIOLET.index);
- font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
- //把字体应用到当前的样式
- style.setFont(font);
- // 生成并设置另一个样式,用于设置内容样式
- HSSFCellStyle style2 = workbook.createCellStyle();
- style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
- style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
- style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
- style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
- style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
- style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
- style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
- style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
- // 生成另一个字体
- HSSFFont font2 = workbook.createFont();
- font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
- // 把字体应用到当前的样式
- style2.setFont(font2);
- //产生表格标题行
- HSSFRow row = sheet.createRow(0);
- for (int i = 0; i < headers.length; i++) {
- HSSFCell cell = row.createCell(i);
- cell.setCellStyle(style);
- HSSFRichTextString text = new HSSFRichTextString(headers[i]);
- cell.setCellValue(text);
- }
- for (int i = 0; i < mapList.size(); i++) {
- row = sheet.createRow(i + 1);
- int j = 0;
- HSSFCell cell = row.createCell(j++);
- cell.setCellValue("循环获得值1");
- cell.setCellStyle(style2);
- row.createCell(j++).setCellValue("循环获得值2");
- row.createCell(j++).setCellValue("循环获得值3");
- row.createCell(j++).setCellValue("循环获得值4");
- }
- try {
- workbook.write(out);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- package testweb;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.apache.poi.hssf.usermodel.HSSFDateUtil;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- import org.apache.poi.poifs.filesystem.POIFSFileSystem;
- import org.apache.poi.ss.usermodel.Cell;
- import org.apache.poi.ss.usermodel.Row;
- import org.apache.poi.ss.usermodel.Sheet;
- public class TestExcel {
- public static void main(String[] args) {
- try {
- FileInputStream file = new FileInputStream("C:/Users/yanan/Desktop/yanan.xls");
- List<Map<String, Object>> yanantest = duquexcel(file);
- for (Map<String, Object> item : yanantest) {
- System.out.println(item.get("id") + "," + item.get("name") + "," + item.get("gendar")+","+item.get("time"));
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- }
- public static List<Map<String, Object>> duquexcel(InputStream fis) {
- List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
- HSSFWorkbook wb;
- try {
- wb = new HSSFWorkbook(new POIFSFileSystem(fis));
- Sheet sheet = wb.getSheetAt(0);
- // 日期格式化
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/dd");
- // 数字格式化
- DecimalFormat df = new DecimalFormat("##");
- // 循环xls中的每个表格
- Row firstRow = sheet.getRow(0);
- for (int i = sheet.getFirstRowNum() + 1; i <= sheet.getLastRowNum(); i++) {
- Row row = sheet.getRow(i);
- Map<String, Object> rowMap = new HashMap<String, Object>();
- for (int k = 0; k < row.getLastCellNum(); k++) {
- Cell cell = row.getCell(k);
- if (null == cell) {
- continue;
- }
- switch (cell.getCellType()) {
- case Cell.CELL_TYPE_NUMERIC:
- if(HSSFDateUtil.isCellDateFormatted(cell)){
- rowMap.put(firstRow.getCell(k).getStringCellValue(),sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue())) );
- break;
- }
- double value_d = cell.getNumericCellValue();
- long value_l = (long) cell.getNumericCellValue();// cell.getCellStyle()获取样式
- if (value_d == value_l)
- rowMap.put(firstRow.getCell(k).getStringCellValue(), String.valueOf(value_l));
- else
- rowMap.put(firstRow.getCell(k).getStringCellValue(), String.valueOf(value_d));
- break;
- case Cell.CELL_TYPE_STRING:
- rowMap.put(firstRow.getCell(k).getStringCellValue(), cell.getStringCellValue());
- break;
- case Cell.CELL_TYPE_BLANK:
- break;
- default:
- rowMap.put(firstRow.getCell(k).getStringCellValue(), cell.toString());
- break;
- }
- }
- // 是否空行
- if (rowMap.size() > 0) {
- resultList.add(rowMap);
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return resultList;
- }
- }
java利用poi生成/读取excel表格的更多相关文章
- java利用poi来读取execl表格返回对象
利用poi来读取execl表格,返回一个对象(可能有点不完善,但是应该能满足平常的所用),用到了反射等等; 使用的jar包有: commons-collections4-4.1.jar poi-3.1 ...
- JAVA 使用 POI进行读取Excel表格示例
导包 编码 public class PoiTest { /** * 最终效果 * 表头一内容0 表头二内容1 表头三内容2 表头一内容1 表头二内容2 表头三内容3 表头一内容2 表头二内容3 表头 ...
- Java利用poi生成word(包含插入图片,动态表格,行合并)
转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...
- Java利用POI导入导出Excel中的数据
首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...
- java的poi技术读取Excel[2003-2007,2010]
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...
- java的poi技术读取Excel数据
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...
- java的poi技术读取Excel[2003-2007,2010]
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...
- 利用 pandas库读取excel表格数据
利用 pandas库读取excel表格数据 初入IT行业,愿与大家一起学习,共同进步,有问题请指出!! 还在为数据读取而头疼呢,请看下方简洁介绍: 数据来源为国家统计局网站下载: 具体方法 代码: i ...
- java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...
随机推荐
- android开发文章收藏
1.activity [Android的从零单排开发日记]之入门篇(四)——Android四大组件之Activity 两分钟彻底让你明白Android Activity生命周期(图文)! 2.serv ...
- git应用套路
git应用套路 一. 配置git别名 1.通过控制台命令vim ~/.gitconfig打开配置页面 2.配置如下内容: [user] name = your Name email = your E- ...
- Python 内嵌函数运用(探究模块)
Python库参考 http://python.org/doc/lib 1. 使用dir #查看 函数的所有特性(以及模块的所有函数.类.变量等.) 一些以下划线开始,暗示(约定俗成) ...
- 【ASP.NET Core分布式项目实战】(一)IdentityServer4登录中心、oauth密码模式identity server4实现
本博客根据http://video.jessetalk.cn/my/course/5视频整理 资料 OAuth2 流程:http://www.ruanyifeng.com/blog/2014/05/o ...
- AbstractQueuedSynchronizer的简单分析
说明:本作者是文章的原创作者,转载请注明出处:本文地址:http://www.cnblogs.com/qm-article/p/7955781.html 一.AbstractQueuedSynchro ...
- 【JavaScript数组】
1.什么是数组--Array 数组就是一组数据的集合 其表现形式就是内存中的一段连续的内存地址 数组名称其实就是连续内存地址的首地址 2.关于js中的数组特点 数组定义时无需指定数据类型 数组定义时可 ...
- Error 0xC00000FD: Stack overflow 之 更改堆栈保留大小
Stack overflow 顾名思义就是堆栈内存溢出. 一.无限递归 这个要自己仔细检查一下,程序中是否含有无限递归的情况,比如下面这就是无限递归: int function(int x, in ...
- NYOJ 题目77 开灯问题(简单模拟)
开灯问题 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 ...
- 【Java学习笔记之十四】Java中this用法小节
用类名定义一个变量的时候,定义的只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法. 那们类里面是够也应该有一个引用来访问自己的属性和方法纳? 呵呵,JAVA提供了一个很好的东西,就是 t ...
- Vijos P1784 数字统计【模拟】
数字统计 背景 来自 NOIP2010 普及组 第一题 描述 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数. 比如在给定范围[2, 22],数字2在数2中出现了1次,在数12中出现了1 ...