Java——关于Excle表格的操作
目录
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 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表格的操作相关推荐
- Java对Excel表格的操作
Java对Excel表格的操作 目前软件开发多采用B/S架构.正B/S架构可以给软件的开发部署带来很大的便利,但是与此同时这种架构也带来了一些问题,例如Web报表的处理等,在B/S架构下,客户端的开发 ...
- java导入excle表格,并且对表格进行相应的修改,并对表格数据进行整理,最后导出本地表格等一系列...
1.首先创建一个java项目 完成效果如下图所示 2.导入以下jar包 3.代码如下 其中行和列的操作是根据需求自动划分的 复制代码 1 public class auto_date { 2 priv ...
- java获取excle表格对象_Java读取excel表格
Java读取excel表格 一般都是用poi技术去读取excel表格的,但是这个技术又是什么呢 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建, ...
- java导出excle表格数据,java导出Excel表格
图片仅供参考 霸气钢铁侠 Thinking:我发现上班时,当一个程序员飞速的敲着代码,大部分情况不是在认真工作,多半是在微信聊天,只有当他键盘敲几下,之后一直在操作鼠标,然后在敲几下键盘,这个时候应该 ...
- Spread表格组件For JAVA功能介绍—表格相关操作
之前有篇文章我们说到 Spread 表格组件的 Java CTP 版本已经发布:<表格组件JAVACTP版本抢先预览>. 本篇我们来看一下他的主要功能,例如下图所示的Excel我们应当如何 ...
- java获取excle表格对象_Java使用excel工具类导出对象功能示例
本文实例讲述了Java使用excel工具类导出对象功能.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.ss.use ...
- java mergecells_jxl操作excle表格中mergeCells中的参数
mergeCells(a,b,c,d) 单元格合并函数 a 单元格的列号 b 单元格的行号 c 从单元格[a,b]起,向左合并到c列 d 从单元格[a,b]起,向下合并到d行 注:单元格的列号和行号都 ...
- java poi wps_POI操作WPS表格POI操作WPS表格.docx
POI操作WPS表格POI操作WPS表格 原文网址:/thread1-1.htmlWps二次开发--POI入门教程一.POI的介绍Apache POI是Apache软件基金会的开放源码函式库,POI提 ...
- java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...
Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...
最新文章
- 新手C#string类常用函数的学习2018.08.04
- listview 打开文件 c#_.NET CORE(C#) WPF简单菜单MVVM绑定
- ETSI MEC — 与 5G 的融合
- centos7下使用yum安装pip
- 贝叶斯优化python包_贝叶斯全局优化(LightGBM调参)
- Vue学习笔记入门篇——数据及DOM
- Web页面适配移动端方案研究
- __cdecl、__stdcall、__fastcall 与 __pascal 浅析
- linux log是什么意思,大家来帮我看看这个LOG是什么意思 英文不好看不懂
- Struts2简单入门实例
- Java Maven简明
- 用C语言画空心三角形
- html - 空格符号 - 字符实体 - 预留字
- 【U8+】数据库清空U8+admin密码
- mini2440之--adc程序
- android友盟自定义事件,友盟统计事件添加
- .cxx_destruct crash
- 乐信季报图解:交易额达562亿 利润4.1亿环比增长59%
- 融资 30 亿元后,李想坦承了他最大的恐惧
- 近百本精品图书全部免费赠送——仅面向学生