目录

1.使用poi工具

2.读取Excel源标题、源数据、总行数、总列数

3.导出excel表格

4.创建新的excel表格

5.判断Excel文件版本

6.其他


1.使用poi工具

pom.xml中添加依赖

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version>
</dependency>

2.读取Excel源标题、源数据、总行数、总列数

/*** 读Excel的方法readExcel,该方法的入口参数为一个File对象* @param file* @return*/
public static Map readExcel(File file) {Map map = new HashMap();try {// 创建输入流,读取ExcelInputStream is = new FileInputStream(file.getAbsolutePath());// jxl提供的Workbook类jxl.Workbook wb = jxl.Workbook.getWorkbook(is);// Excel的页签数量int sheet_size = wb.getNumberOfSheets();if(sheet_size > 1){return null;}//获取原标题List oldTitleRow = new ArrayList();List<Object> outerList = new ArrayList<Object>();// 每个页签创建一个Sheet对象jxl.Sheet sheet = wb.getSheet(0);//sheet.getRows()返回该页的总行数for (int i = 0; i < sheet.getRows(); i++) {Map innerMap = new HashMap();String cellinfo = "";// sheet.getColumns()返回该页的总列数for (int j = 0; j < sheet.getColumns(); j++) {cellinfo = sheet.getCell(j, i).getContents();//如果是第3行,取出数据作为oldTitleRow行if(i == 2){oldTitleRow.add(cellinfo);}if(i > 2){innerMap.put(j, cellinfo);}}//只取出第3行以及第三之后的数据if(i > 2){outerList.add(innerMap);}}//保存源标题、源数据、总行数、总列数map.put("oldTitleRow", oldTitleRow);map.put("dataList", outerList);map.put("rowNum", sheet.getRows()-3);map.put("columnNum", sheet.getColumns());return map;} catch (FileNotFoundException e) {e.printStackTrace();} catch (BiffException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;
}

3.导出excel表格

/*** 导出excel表格* @param dataList 被导出的数据* @param cloumnCount 总列数* @param newTitleRow 标题行* @param finalXlsxPath 导出路径*/
public static void writeExcel(List<Map> dataList, int cloumnCount,List newTitleRow, String finalXlsxPath) {OutputStream out = null;try {// 获取总列数int columnNumCount = cloumnCount;// 创建空的Excel文档,并加上titlecreateExcel(finalXlsxPath,"Template", newTitleRow);File finalXlsxFile = new File(finalXlsxPath);Workbook workBook = getWorkbok(finalXlsxFile);// sheet 对应一个工作页Sheet sheet = workBook.getSheetAt(0);// 创建文件输出流,输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效out = new FileOutputStream(finalXlsxPath);workBook.write(out);/*** 往Excel中写新数据*/for (int j = 0; j < dataList.size(); j++) {// 创建一行:从第二行开始,跳过属性列Row row = sheet.createRow(j + 1);// 得到要插入的每一条记录Map dataMap = dataList.get(j);for (int k = 0; k < columnNumCount; k++) {String data = dataMap.get(k).toString();// 在一行内循环Cell cell = row.createCell(k);cell.setCellValue(data);}}// 创建文件输出流,准备输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效out = new FileOutputStream(finalXlsxPath);workBook.write(out);} catch (Exception e) {e.printStackTrace();} finally {try {if (out != null) {out.flush();out.close();}} catch (IOException e) {e.printStackTrace();}}System.out.println("数据导出成功");
}

4.创建新的excel表格

/*** 创建新excel* @param fileDir  excel的路径* @param sheetName 要创建的表格索引* @param newTitleRow 要创建的表格标题*/
public static void createExcel(String fileDir,String sheetName, List<String> newTitleRow){//判断文件是否存在if(fileExist(fileDir)){deleteExcel(fileDir);}//创建workbookHSSFWorkbook workbook = new HSSFWorkbook();//添加Worksheet(不添加sheet时生成的xls文件打开时会报错)HSSFSheet sheet1 = workbook.createSheet(sheetName);//新建文件FileOutputStream out = null;try {//添加表头HSSFRow row = workbook.getSheet(sheetName).createRow(0);    //创建第一行for(int i = 0;i < newTitleRow.size();i++){HSSFCell cell = row.createCell(i);cell.setCellValue(newTitleRow.get(i));}out = new FileOutputStream(fileDir);workbook.write(out);} catch (Exception e) {e.printStackTrace();} finally {try {out.close();} catch (IOException e) {e.printStackTrace();}}
}

5.判断Excel文件版本

/*** 判断Excel的版本,获取Workbook* @param file* @return*/
public static Workbook getWorkbok(File file) {Workbook wb = null;try {FileInputStream in = new FileInputStream(file);if (file.getName().endsWith(EXCEL_XLS)) {     //Excel&nbsp;2003wb = new HSSFWorkbook(in);} else if (file.getName().endsWith(EXCEL_XLSX)) {    // Excel 2007/2010wb = new XSSFWorkbook(in);}} catch (IOException e) {e.printStackTrace();}return wb;
}

6.其他

/*** 判断文件是否存在.* @param fileDir  文件路径* @return*/
public static boolean fileExist(String fileDir){boolean flag = false;File file = new File(fileDir);flag = file.exists();return flag;
}/*** 删除文件.* @param fileDir  文件路径*/
public static boolean deleteExcel(String fileDir) {boolean flag = false;File file = new File(fileDir);// 判断目录或文件是否存在if (!file.exists()) {  // 不存在返回 falsereturn flag;} else {// 判断是否为文件if (file.isFile()) {  // 为文件时调用删除文件方法file.delete();flag = true;}}return flag;
}

OK, GAME OVER!

Java——关于Excle表格的操作相关推荐

  1. Java对Excel表格的操作

    Java对Excel表格的操作 目前软件开发多采用B/S架构.正B/S架构可以给软件的开发部署带来很大的便利,但是与此同时这种架构也带来了一些问题,例如Web报表的处理等,在B/S架构下,客户端的开发 ...

  2. java导入excle表格,并且对表格进行相应的修改,并对表格数据进行整理,最后导出本地表格等一系列...

    1.首先创建一个java项目 完成效果如下图所示 2.导入以下jar包 3.代码如下 其中行和列的操作是根据需求自动划分的 复制代码 1 public class auto_date { 2 priv ...

  3. java获取excle表格对象_Java读取excel表格

    Java读取excel表格 一般都是用poi技术去读取excel表格的,但是这个技术又是什么呢 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建, ...

  4. java导出excle表格数据,java导出Excel表格

    图片仅供参考 霸气钢铁侠 Thinking:我发现上班时,当一个程序员飞速的敲着代码,大部分情况不是在认真工作,多半是在微信聊天,只有当他键盘敲几下,之后一直在操作鼠标,然后在敲几下键盘,这个时候应该 ...

  5. Spread表格组件For JAVA功能介绍—表格相关操作

    之前有篇文章我们说到 Spread 表格组件的 Java CTP 版本已经发布:<表格组件JAVACTP版本抢先预览>. 本篇我们来看一下他的主要功能,例如下图所示的Excel我们应当如何 ...

  6. java获取excle表格对象_Java使用excel工具类导出对象功能示例

    本文实例讲述了Java使用excel工具类导出对象功能.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.ss.use ...

  7. java mergecells_jxl操作excle表格中mergeCells中的参数

    mergeCells(a,b,c,d) 单元格合并函数 a 单元格的列号 b 单元格的行号 c 从单元格[a,b]起,向左合并到c列 d 从单元格[a,b]起,向下合并到d行 注:单元格的列号和行号都 ...

  8. java poi wps_POI操作WPS表格POI操作WPS表格.docx

    POI操作WPS表格POI操作WPS表格 原文网址:/thread1-1.htmlWps二次开发--POI入门教程一.POI的介绍Apache POI是Apache软件基金会的开放源码函式库,POI提 ...

  9. java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...

    Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...

最新文章

  1. 新手C#string类常用函数的学习2018.08.04
  2. listview 打开文件 c#_.NET CORE(C#) WPF简单菜单MVVM绑定
  3. ETSI MEC — 与 5G 的融合
  4. centos7下使用yum安装pip
  5. 贝叶斯优化python包_贝叶斯全局优化(LightGBM调参)
  6. Vue学习笔记入门篇——数据及DOM
  7. Web页面适配移动端方案研究
  8. __cdecl、__stdcall、__fastcall 与 __pascal 浅析
  9. linux log是什么意思,大家来帮我看看这个LOG是什么意思 英文不好看不懂
  10. Struts2简单入门实例
  11. Java Maven简明
  12. 用C语言画空心三角形
  13. html - 空格符号 - 字符实体 - 预留字
  14. 【U8+】数据库清空U8+admin密码
  15. mini2440之--adc程序
  16. android友盟自定义事件,友盟统计事件添加
  17. .cxx_destruct crash
  18. 乐信季报图解:交易额达562亿 利润4.1亿环比增长59%
  19. 融资 30 亿元后,李想坦承了他最大的恐惧
  20. 近百本精品图书全部免费赠送——仅面向学生

热门文章

  1. html文件引入elementui该怎么做
  2. 腾讯微博为何干不过新浪?
  3. Linux配置分布式数据/mysql集群 ndb_mgmd 实验报错摘录
  4. 如何从零开始成为一个程序员
  5. C++Directx11开发笔记二:Direct3D基础设备的初始化
  6. 关于颁布总承包服务费标准的通知
  7. 2023年副业赚钱最快的方法,最后一个时代红利,你一定要抓住!
  8. 如何测试CTS4.0
  9. Ubuntu下利用Opencv进行点阵汉字的字模读取与显示
  10. 封包协议,加密解密,线程发包,recv,明文收包