1.引入jar包依赖

   

  1. <dependency>
  2. <groupId>org.apache.poi</groupId>
  3. <artifactId>poi</artifactId>
  4. <version>3.9</version>
  5. </dependency>
  6.  
  7. <dependency>
  8. <groupId>org.apache.poi</groupId>
  9. <artifactId>poi-ooxml</artifactId>
  10. <version>3.8</version>
  11. </dependency>

2.编写代码测试

  1. package testweb;
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.OutputStream;
  8. import java.util.LinkedList;
  9. import java.util.List;
  10.  
  11. import org.apache.poi.hssf.usermodel.HSSFCell;
  12. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  13. import org.apache.poi.hssf.usermodel.HSSFFont;
  14. import org.apache.poi.hssf.usermodel.HSSFRichTextString;
  15. import org.apache.poi.hssf.usermodel.HSSFRow;
  16. import org.apache.poi.hssf.usermodel.HSSFSheet;
  17. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  18. import org.apache.poi.hssf.util.HSSFColor;
  19.  
  20. public class TestExcel {
  21.  
  22. public static void main(String[] args) {
  23. List<Object> l=new LinkedList<>();
  24. l.add("zs");
  25. l.add("ls");
  26. l.add("we");
  27. l.add("mz");
  28. String[] headers=new String[]{"tou1","tou2","tou3","tou4"};
  29. try {
  30. OutputStream o= new FileOutputStream(new File("C:/Users/yanan/Desktop/yanantest.xls"));
  31. exportDataExcel("nihao",headers,l,o);
  32. } catch (FileNotFoundException e) {
  33. e.printStackTrace();
  34. }
  35. }
  36.  
  37. protected static void exportDataExcel(String title,String[] headers,List<Object> mapList,OutputStream out){
  38. //声明一个工作簿
  39. HSSFWorkbook workbook = new HSSFWorkbook();
  40. //生成一个表格
  41. HSSFSheet sheet = workbook.createSheet(title);
  42. //设置表格默认列宽度字符
  43. sheet.setDefaultColumnWidth(20);
  44. //生成一个样式,用来设置标题样式
  45. HSSFCellStyle style = workbook.createCellStyle();
  46. //设置这些样式
  47. style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
  48. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
  49. style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
  50. style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
  51. style.setBorderRight(HSSFCellStyle.BORDER_THIN);
  52. style.setBorderTop(HSSFCellStyle.BORDER_THIN);
  53. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  54. //生成一个字体
  55. HSSFFont font = workbook.createFont();
  56. font.setColor(HSSFColor.VIOLET.index);
  57. font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
  58. //把字体应用到当前的样式
  59. style.setFont(font);
  60. // 生成并设置另一个样式,用于设置内容样式
  61. HSSFCellStyle style2 = workbook.createCellStyle();
  62. style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
  63. style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
  64. style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
  65. style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
  66. style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
  67. style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
  68. style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  69. style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
  70. // 生成另一个字体
  71. HSSFFont font2 = workbook.createFont();
  72. font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
  73. // 把字体应用到当前的样式
  74. style2.setFont(font2);
  75. //产生表格标题行
  76. HSSFRow row = sheet.createRow(0);
  77. for (int i = 0; i < headers.length; i++) {
  78. HSSFCell cell = row.createCell(i);
  79. cell.setCellStyle(style);
  80. HSSFRichTextString text = new HSSFRichTextString(headers[i]);
  81. cell.setCellValue(text);
  82. }
  83. for (int i = 0; i < mapList.size(); i++) {
  84. row = sheet.createRow(i + 1);
  85. int j = 0;
  86. HSSFCell cell = row.createCell(j++);
  87. cell.setCellValue("循环获得值1");
  88. cell.setCellStyle(style2);
  89. row.createCell(j++).setCellValue("循环获得值2");
  90. row.createCell(j++).setCellValue("循环获得值3");
  91. row.createCell(j++).setCellValue("循环获得值4");
  92. }
  93. try {
  94. workbook.write(out);
  95. } catch (IOException e) {
  96. e.printStackTrace();
  97. }
  98. }
  99. }
  1. package testweb;
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.text.DecimalFormat;
  8. import java.text.SimpleDateFormat;
  9. import java.util.ArrayList;
  10. import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13.  
  14. import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  15. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  16. import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  17. import org.apache.poi.ss.usermodel.Cell;
  18. import org.apache.poi.ss.usermodel.Row;
  19. import org.apache.poi.ss.usermodel.Sheet;
  20.  
  21. public class TestExcel {
  22. public static void main(String[] args) {
  23. try {
  24. FileInputStream file = new FileInputStream("C:/Users/yanan/Desktop/yanan.xls");
  25. List<Map<String, Object>> yanantest = duquexcel(file);
  26. for (Map<String, Object> item : yanantest) {
  27. System.out.println(item.get("id") + "," + item.get("name") + "," + item.get("gendar")+","+item.get("time"));
  28. }
  29. } catch (FileNotFoundException e) {
  30. e.printStackTrace();
  31. }
  32. }
  33.  
  34. public static List<Map<String, Object>> duquexcel(InputStream fis) {
  35. List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
  36. HSSFWorkbook wb;
  37. try {
  38. wb = new HSSFWorkbook(new POIFSFileSystem(fis));
  39. Sheet sheet = wb.getSheetAt(0);
  40. // 日期格式化
  41. SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/dd");
  42. // 数字格式化
  43. DecimalFormat df = new DecimalFormat("##");
  44. // 循环xls中的每个表格
  45. Row firstRow = sheet.getRow(0);
  46.  
  47. for (int i = sheet.getFirstRowNum() + 1; i <= sheet.getLastRowNum(); i++) {
  48. Row row = sheet.getRow(i);
  49. Map<String, Object> rowMap = new HashMap<String, Object>();
  50.  
  51. for (int k = 0; k < row.getLastCellNum(); k++) {
  52. Cell cell = row.getCell(k);
  53. if (null == cell) {
  54. continue;
  55. }
  56. switch (cell.getCellType()) {
  57. case Cell.CELL_TYPE_NUMERIC:
  58. if(HSSFDateUtil.isCellDateFormatted(cell)){
  59. rowMap.put(firstRow.getCell(k).getStringCellValue(),sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue())) );
  60. break;
  61. }
  62. double value_d = cell.getNumericCellValue();
  63. long value_l = (long) cell.getNumericCellValue();// cell.getCellStyle()获取样式
  64. if (value_d == value_l)
  65. rowMap.put(firstRow.getCell(k).getStringCellValue(), String.valueOf(value_l));
  66. else
  67. rowMap.put(firstRow.getCell(k).getStringCellValue(), String.valueOf(value_d));
  68. break;
  69. case Cell.CELL_TYPE_STRING:
  70. rowMap.put(firstRow.getCell(k).getStringCellValue(), cell.getStringCellValue());
  71. break;
  72. case Cell.CELL_TYPE_BLANK:
  73. break;
  74. default:
  75. rowMap.put(firstRow.getCell(k).getStringCellValue(), cell.toString());
  76. break;
  77. }
  78. }
  79. // 是否空行
  80. if (rowMap.size() > 0) {
  81. resultList.add(rowMap);
  82. }
  83. }
  84. } catch (IOException e) {
  85. e.printStackTrace();
  86. }
  87. return resultList;
  88. }
  89. }

java利用poi生成/读取excel表格的更多相关文章

  1. java利用poi来读取execl表格返回对象

    利用poi来读取execl表格,返回一个对象(可能有点不完善,但是应该能满足平常的所用),用到了反射等等; 使用的jar包有: commons-collections4-4.1.jar poi-3.1 ...

  2. JAVA 使用 POI进行读取Excel表格示例

    导包 编码 public class PoiTest { /** * 最终效果 * 表头一内容0 表头二内容1 表头三内容2 表头一内容1 表头二内容2 表头三内容3 表头一内容2 表头二内容3 表头 ...

  3. Java利用poi生成word(包含插入图片,动态表格,行合并)

    转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...

  4. Java利用POI导入导出Excel中的数据

         首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...

  5. java的poi技术读取Excel[2003-2007,2010]

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...

  6. java的poi技术读取Excel数据

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...

  7. java的poi技术读取Excel[2003-2007,2010]

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...

  8. 利用 pandas库读取excel表格数据

    利用 pandas库读取excel表格数据 初入IT行业,愿与大家一起学习,共同进步,有问题请指出!! 还在为数据读取而头疼呢,请看下方简洁介绍: 数据来源为国家统计局网站下载: 具体方法 代码: i ...

  9. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

随机推荐

  1. android开发文章收藏

    1.activity [Android的从零单排开发日记]之入门篇(四)——Android四大组件之Activity 两分钟彻底让你明白Android Activity生命周期(图文)! 2.serv ...

  2. git应用套路

    git应用套路 一. 配置git别名 1.通过控制台命令vim ~/.gitconfig打开配置页面 2.配置如下内容: [user] name = your Name email = your E- ...

  3. Python 内嵌函数运用(探究模块)

    Python库参考 http://python.org/doc/lib 1. 使用dir        #查看 函数的所有特性(以及模块的所有函数.类.变量等.) 一些以下划线开始,暗示(约定俗成) ...

  4. 【ASP.NET Core分布式项目实战】(一)IdentityServer4登录中心、oauth密码模式identity server4实现

    本博客根据http://video.jessetalk.cn/my/course/5视频整理 资料 OAuth2 流程:http://www.ruanyifeng.com/blog/2014/05/o ...

  5. AbstractQueuedSynchronizer的简单分析

    说明:本作者是文章的原创作者,转载请注明出处:本文地址:http://www.cnblogs.com/qm-article/p/7955781.html 一.AbstractQueuedSynchro ...

  6. 【JavaScript数组】

    1.什么是数组--Array 数组就是一组数据的集合 其表现形式就是内存中的一段连续的内存地址 数组名称其实就是连续内存地址的首地址 2.关于js中的数组特点 数组定义时无需指定数据类型 数组定义时可 ...

  7. Error 0xC00000FD: Stack overflow 之 更改堆栈保留大小

    Stack  overflow  顾名思义就是堆栈内存溢出. 一.无限递归 这个要自己仔细检查一下,程序中是否含有无限递归的情况,比如下面这就是无限递归: int function(int x, in ...

  8. NYOJ 题目77 开灯问题(简单模拟)

    开灯问题 时间限制:3000 ms  |            内存限制:65535 KB 难度:1           描述 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 ...

  9. 【Java学习笔记之十四】Java中this用法小节

    用类名定义一个变量的时候,定义的只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法. 那们类里面是够也应该有一个引用来访问自己的属性和方法纳? 呵呵,JAVA提供了一个很好的东西,就是 t ...

  10. Vijos P1784 数字统计【模拟】

    数字统计 背景 来自 NOIP2010 普及组 第一题 描述 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数. 比如在给定范围[2, 22],数字2在数2中出现了1次,在数12中出现了1 ...