1:添加处理excel的依赖jar包

  1. <!-- 引入poi,解析workbook视图 -->
  2. <dependency>
  3. <groupId>org.apache.poi</groupId>
  4. <artifactId>poi</artifactId>
  5. <version>3.16</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.apache.poi</groupId>
  9. <artifactId>poi-ooxml</artifactId>
  10. <version>3.14</version>
  11. </dependency>
  12. <!-- 处理excel和上面功能是一样的-->
  13. <dependency>
  14. <groupId>net.sourceforge.jexcelapi</groupId>
  15. <artifactId>jxl</artifactId>
  16. <version>2.6.10</version>
  17. </dependency>

2:向excel中写入内容的类

  WriteExcel.java

  1. package com.li.controller;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.OutputStream;
  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import java.util.Map;
  11.  
  12. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  13. import org.apache.poi.ss.usermodel.Cell;
  14. import org.apache.poi.ss.usermodel.Row;
  15. import org.apache.poi.ss.usermodel.Sheet;
  16. import org.apache.poi.ss.usermodel.Workbook;
  17. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  18.  
  19. public class WriteExcel {
  20. private static final String EXCEL_XLS = "xls";
  21. private static final String EXCEL_XLSX = "xlsx";
  22.  
  23. public static void main(String[] args) {
  24.  
  25. Map<String, String> dataMap=new HashMap<String, String>();
  26. dataMap.put("BankName", "BankName");
  27. dataMap.put("Addr", "Addr");
  28. dataMap.put("Phone", "Phone");
  29. List<Map> list=new ArrayList<Map>();
  30. list.add(dataMap);
  31. writeExcel(list, 3, "D:/writeExcel.xlsx");
  32.  
  33. }
  34.  
  35. public static void writeExcel(List<Map> dataList, int cloumnCount,String finalXlsxPath){
  36. OutputStream out = null;
  37. try {
  38. // 获取总列数
  39. int columnNumCount = cloumnCount;
  40. // 读取Excel文档
  41. File finalXlsxFile = new File(finalXlsxPath);
  42. Workbook workBook = getWorkbok(finalXlsxFile);
  43. // sheet 对应一个工作页
  44. Sheet sheet = workBook.getSheetAt(0);
  45. /**
  46. * 删除原有数据,除了属性列
  47. */
  48. int rowNumber = sheet.getLastRowNum(); // 第一行从0开始算
  49. System.out.println("原始数据总行数,除属性列:" + rowNumber);
  50. for (int i = 1; i <= rowNumber; i++) {
  51. Row row = sheet.getRow(i);
  52. sheet.removeRow(row);
  53. }
  54. // 创建文件输出流,输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效
  55. out = new FileOutputStream(finalXlsxPath);
  56. workBook.write(out);
  57. /**
  58. * 往Excel中写新数据
  59. */
  60. for (int j = 0; j < dataList.size(); j++) {
  61. // 创建一行:从第二行开始,跳过属性列
  62. Row row = sheet.createRow(j + 1);
  63. // 得到要插入的每一条记录
  64. Map dataMap = dataList.get(j);
  65. String name = dataMap.get("BankName").toString();
  66. String address = dataMap.get("Addr").toString();
  67. String phone = dataMap.get("Phone").toString();
  68. for (int k = 0; k <= columnNumCount; k++) {
  69. // 在一行内循环
  70. Cell first = row.createCell(0);
  71. first.setCellValue(name);
  72.  
  73. Cell second = row.createCell(1);
  74. second.setCellValue(address);
  75.  
  76. Cell third = row.createCell(2);
  77. third.setCellValue(phone);
  78. }
  79. }
  80. // 创建文件输出流,准备输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效
  81. out = new FileOutputStream(finalXlsxPath);
  82. workBook.write(out);
  83. } catch (Exception e) {
  84. e.printStackTrace();
  85. } finally{
  86. try {
  87. if(out != null){
  88. out.flush();
  89. out.close();
  90. }
  91. } catch (IOException e) {
  92. e.printStackTrace();
  93. }
  94. }
  95. System.out.println("数据导出成功");
  96. }
  97.  
  98. /**
  99. * 判断Excel的版本,获取Workbook
  100. * @param in
  101. * @param filename
  102. * @return
  103. * @throws IOException
  104. */
  105. public static Workbook getWorkbok(File file) throws IOException{
  106. Workbook wb = null;
  107. FileInputStream in = new FileInputStream(file);
  108. if(file.getName().endsWith(EXCEL_XLS)){ //Excel&nbsp;2003
  109. wb = new HSSFWorkbook(in);
  110. }else if(file.getName().endsWith(EXCEL_XLSX)){ // Excel 2007/2010
  111. wb = new XSSFWorkbook(in);
  112. }
  113. return wb;
  114. }
  115. }

3:读取Excel中的数据,并写入list中

  1. package com.li.controller;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. import jxl.Sheet;
  11. import jxl.Workbook;
  12. import jxl.read.biff.BiffException;
  13. public class ReadExcel {
  14. public static void main(String[] args) {
  15. ReadExcel obj = new ReadExcel();
  16. // 此处为我创建Excel路径:E:/zhanhj/studysrc/jxl下
  17. File file = new File("D:/readExcel.xls");
  18. List excelList = obj.readExcel(file);
  19. System.out.println("list中的数据打印出来");
  20. for (int i = 0; i < excelList.size(); i++) {
  21. List list = (List) excelList.get(i);
  22. for (int j = 0; j < list.size(); j++) {
  23. System.out.print(list.get(j));
  24. }
  25. System.out.println();
  26. }
  27.  
  28. }
  29. // 去读Excel的方法readExcel,该方法的入口参数为一个File对象
  30. public List readExcel(File file) {
  31. try {
  32. // 创建输入流,读取Excel
  33. InputStream is = new FileInputStream(file.getAbsolutePath());
  34. // jxl提供的Workbook类
  35. Workbook wb = Workbook.getWorkbook(is);
  36. // Excel的页签数量
  37. int sheet_size = wb.getNumberOfSheets();
  38. for (int index = 0; index < sheet_size; index++) {
  39. List<List> outerList=new ArrayList<List>();
  40. // 每个页签创建一个Sheet对象
  41. Sheet sheet = wb.getSheet(index);
  42. // sheet.getRows()返回该页的总行数
  43. for (int i = 0; i < sheet.getRows(); i++) {
  44. List innerList=new ArrayList();
  45. // sheet.getColumns()返回该页的总列数
  46. for (int j = 0; j < sheet.getColumns(); j++) {
  47. String cellinfo = sheet.getCell(j, i).getContents();
  48. if(cellinfo.isEmpty()){
  49. continue;
  50. }
  51. innerList.add(cellinfo);
  52. System.out.print(cellinfo);
  53. }
  54. outerList.add(i, innerList);
  55. System.out.println();
  56. }
  57. return outerList;
  58. }
  59. } catch (FileNotFoundException e) {
  60. e.printStackTrace();
  61. } catch (BiffException e) {
  62. e.printStackTrace();
  63. } catch (IOException e) {
  64. e.printStackTrace();
  65. }
  66. return null;
  67. }
  68. }

4:在D盘下面创建readExcel.xls(有内容) 和writeExcel.xlsx即可

使用java进行excel读取和写入的更多相关文章

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

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

  2. Java使用POI读取和写入Excel指南(转)

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

  3. Pandas之Dateframe 实现Excel读取与写入

    目的:有时需对数据进行到出到Excel,直观的给别人参阅,或从Excel中读取数据进行操作和分析依赖库 pandas 可简单的读出和写入 1,根据Excel读取( 需安装xlrd库) import n ...

  4. C#连接Excel读取与写入数据库SQL ( 上 )

    第一次写C#与sql的东西,主要任务是从Excel读取数据,再存到SQL server中. 先上读取Excel文件的code如下. public bool GetFiles(string equipN ...

  5. python使用 openpyxl包 excel读取与写入

    '''### 写入操作 ###from openpyxl import Workbook#实例化对象wb=Workbook()#创建表ws1=wb.create_sheet('work',0) #默认 ...

  6. C#中excel读取和写入

    1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { stri ...

  7. Java 创建Excel并逐行写入数据

    package com.xxx.common.excel; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...

  8. Python调用百度地图API实现批量经纬度转换为实际省市地点(api调用,json解析,excel读取与写入)

    1.获取秘钥 调用百度地图API实现得申请百度账号或者登陆百度账号,然后申请自己的ak秘钥.链接如下:http://lbsyun.baidu.com/apiconsole/key?applicatio ...

  9. C#连接Excel读取与写入数据库SQL ( 下 )

    接上期 dataset简而言之可以理解为 虚拟的 数据库或是Excel文件.而dataset里的datatable 可以理解为数据库中的table活着Excel里的sheet(Excel里面不是可以新 ...

随机推荐

  1. window策略设置

    gpedit.msc  组策略编辑器 secopl.msc 本地安全设置 共享(不用登录即可访问本地共享)设置: 运行里输入secpol.msc启动“本地安全设置”-“用户权利指派”-将“拒绝从网络访 ...

  2. 安装与使用 Trac 来管理项目

    1 概要 以 Windows 平台为例,讲述一下有关 Trac 的基本配置与使用,同时分享一下有关 Trac 的项目管理经验. 2 安装 Trac 前的准备工作   2.1 准备工作 安装 Pytho ...

  3. JS-缓冲运动基础结构

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 跟bWAPP学WEB安全(PHP代码)--SQL注入的一些技巧

    背景 模拟环境还是 bWAPP,只不过这个bWAPP的SQL注入有点多,一一写意义不大,在这边就利用这个环境来尝试一些SQL注入的技巧.并研究下PHP的防御代码. 普通的bWAPPSQL注入的简单介绍 ...

  5. 复杂度O(n)计算

    https://blog.csdn.net/daijin888888/article/details/66970902 一.算法的时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规 ...

  6. 危险的浮点数float

    今天写程序又以为我见鬼了!最后查出来发现原来又是浮点数搞的鬼! 情况大致是这样的,我想要测试向量运算的速度,所以要对一个浮点数向量进行求和运算,代码如下: int vect_size=10000000 ...

  7. vim配置函数跳转(c/c++)

    暂时草记一下,有时间好好整理 ctags 如果只是查看函数与变量是在哪里定义的,用ctags就可以了. ctrl+]跳到定义的地方,ctrl+t跳回来. 想要像IDE那样在旁边显示函数与变量列表,用t ...

  8. vim ctrl+v垂直选取产生 e353错误

    原因是/etc/vim/vimrc中map ctrl+v为其他作用了 解决方法: 删除掉map<C-V>...项即可

  9. Spark2 ML包之决策树分类Decision tree classifier详细解说

    所用数据源,请参考本人博客http://www.cnblogs.com/wwxbi/p/6063613.html 1.导入包 import org.apache.spark.sql.SparkSess ...

  10. 这个代码给所有带有name属性的链接加了一个背景色

    jQuery起点教程之使用选择器和事件jQuery提供两种方式来选择html的elements: 第一种是用CSS和Xpath选择器联合起来形成一个字符串来传送到jQuery的构造器(如:$(&quo ...