使用java进行excel读取和写入
1:添加处理excel的依赖jar包
- <!-- 引入poi,解析workbook视图 -->
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- <version>3.16</version>
- </dependency>
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-ooxml</artifactId>
- <version>3.14</version>
- </dependency>
- <!-- 处理excel和上面功能是一样的-->
- <dependency>
- <groupId>net.sourceforge.jexcelapi</groupId>
- <artifactId>jxl</artifactId>
- <version>2.6.10</version>
- </dependency>
2:向excel中写入内容的类
WriteExcel.java
- package com.li.controller;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- import org.apache.poi.ss.usermodel.Cell;
- import org.apache.poi.ss.usermodel.Row;
- import org.apache.poi.ss.usermodel.Sheet;
- import org.apache.poi.ss.usermodel.Workbook;
- import org.apache.poi.xssf.usermodel.XSSFWorkbook;
- public class WriteExcel {
- private static final String EXCEL_XLS = "xls";
- private static final String EXCEL_XLSX = "xlsx";
- public static void main(String[] args) {
- Map<String, String> dataMap=new HashMap<String, String>();
- dataMap.put("BankName", "BankName");
- dataMap.put("Addr", "Addr");
- dataMap.put("Phone", "Phone");
- List<Map> list=new ArrayList<Map>();
- list.add(dataMap);
- writeExcel(list, 3, "D:/writeExcel.xlsx");
- }
- public static void writeExcel(List<Map> dataList, int cloumnCount,String finalXlsxPath){
- OutputStream out = null;
- try {
- // 获取总列数
- int columnNumCount = cloumnCount;
- // 读取Excel文档
- File finalXlsxFile = new File(finalXlsxPath);
- Workbook workBook = getWorkbok(finalXlsxFile);
- // sheet 对应一个工作页
- Sheet sheet = workBook.getSheetAt(0);
- /**
- * 删除原有数据,除了属性列
- */
- int rowNumber = sheet.getLastRowNum(); // 第一行从0开始算
- System.out.println("原始数据总行数,除属性列:" + rowNumber);
- for (int i = 1; i <= rowNumber; i++) {
- Row row = sheet.getRow(i);
- sheet.removeRow(row);
- }
- // 创建文件输出流,输出电子表格:这个必须有,否则你在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);
- String name = dataMap.get("BankName").toString();
- String address = dataMap.get("Addr").toString();
- String phone = dataMap.get("Phone").toString();
- for (int k = 0; k <= columnNumCount; k++) {
- // 在一行内循环
- Cell first = row.createCell(0);
- first.setCellValue(name);
- Cell second = row.createCell(1);
- second.setCellValue(address);
- Cell third = row.createCell(2);
- third.setCellValue(phone);
- }
- }
- // 创建文件输出流,准备输出电子表格:这个必须有,否则你在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("数据导出成功");
- }
- /**
- * 判断Excel的版本,获取Workbook
- * @param in
- * @param filename
- * @return
- * @throws IOException
- */
- public static Workbook getWorkbok(File file) throws IOException{
- Workbook wb = null;
- FileInputStream in = new FileInputStream(file);
- if(file.getName().endsWith(EXCEL_XLS)){ //Excel 2003
- wb = new HSSFWorkbook(in);
- }else if(file.getName().endsWith(EXCEL_XLSX)){ // Excel 2007/2010
- wb = new XSSFWorkbook(in);
- }
- return wb;
- }
- }
3:读取Excel中的数据,并写入list中
- package com.li.controller;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.List;
- import jxl.Sheet;
- import jxl.Workbook;
- import jxl.read.biff.BiffException;
- public class ReadExcel {
- public static void main(String[] args) {
- ReadExcel obj = new ReadExcel();
- // 此处为我创建Excel路径:E:/zhanhj/studysrc/jxl下
- File file = new File("D:/readExcel.xls");
- List excelList = obj.readExcel(file);
- System.out.println("list中的数据打印出来");
- for (int i = 0; i < excelList.size(); i++) {
- List list = (List) excelList.get(i);
- for (int j = 0; j < list.size(); j++) {
- System.out.print(list.get(j));
- }
- System.out.println();
- }
- }
- // 去读Excel的方法readExcel,该方法的入口参数为一个File对象
- public List readExcel(File file) {
- try {
- // 创建输入流,读取Excel
- InputStream is = new FileInputStream(file.getAbsolutePath());
- // jxl提供的Workbook类
- Workbook wb = Workbook.getWorkbook(is);
- // Excel的页签数量
- int sheet_size = wb.getNumberOfSheets();
- for (int index = 0; index < sheet_size; index++) {
- List<List> outerList=new ArrayList<List>();
- // 每个页签创建一个Sheet对象
- Sheet sheet = wb.getSheet(index);
- // sheet.getRows()返回该页的总行数
- for (int i = 0; i < sheet.getRows(); i++) {
- List innerList=new ArrayList();
- // sheet.getColumns()返回该页的总列数
- for (int j = 0; j < sheet.getColumns(); j++) {
- String cellinfo = sheet.getCell(j, i).getContents();
- if(cellinfo.isEmpty()){
- continue;
- }
- innerList.add(cellinfo);
- System.out.print(cellinfo);
- }
- outerList.add(i, innerList);
- System.out.println();
- }
- return outerList;
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (BiffException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
- }
4:在D盘下面创建readExcel.xls(有内容) 和writeExcel.xlsx即可
使用java进行excel读取和写入的更多相关文章
- Java使用POI读取和写入Excel指南
Java使用POI读取和写入Excel指南 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃 ...
- Java使用POI读取和写入Excel指南(转)
做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃,这里基于最新的Apache POI 4.0 ...
- Pandas之Dateframe 实现Excel读取与写入
目的:有时需对数据进行到出到Excel,直观的给别人参阅,或从Excel中读取数据进行操作和分析依赖库 pandas 可简单的读出和写入 1,根据Excel读取( 需安装xlrd库) import n ...
- C#连接Excel读取与写入数据库SQL ( 上 )
第一次写C#与sql的东西,主要任务是从Excel读取数据,再存到SQL server中. 先上读取Excel文件的code如下. public bool GetFiles(string equipN ...
- python使用 openpyxl包 excel读取与写入
'''### 写入操作 ###from openpyxl import Workbook#实例化对象wb=Workbook()#创建表ws1=wb.create_sheet('work',0) #默认 ...
- C#中excel读取和写入
1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { stri ...
- Java 创建Excel并逐行写入数据
package com.xxx.common.excel; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...
- Python调用百度地图API实现批量经纬度转换为实际省市地点(api调用,json解析,excel读取与写入)
1.获取秘钥 调用百度地图API实现得申请百度账号或者登陆百度账号,然后申请自己的ak秘钥.链接如下:http://lbsyun.baidu.com/apiconsole/key?applicatio ...
- C#连接Excel读取与写入数据库SQL ( 下 )
接上期 dataset简而言之可以理解为 虚拟的 数据库或是Excel文件.而dataset里的datatable 可以理解为数据库中的table活着Excel里的sheet(Excel里面不是可以新 ...
随机推荐
- window策略设置
gpedit.msc 组策略编辑器 secopl.msc 本地安全设置 共享(不用登录即可访问本地共享)设置: 运行里输入secpol.msc启动“本地安全设置”-“用户权利指派”-将“拒绝从网络访 ...
- 安装与使用 Trac 来管理项目
1 概要 以 Windows 平台为例,讲述一下有关 Trac 的基本配置与使用,同时分享一下有关 Trac 的项目管理经验. 2 安装 Trac 前的准备工作 2.1 准备工作 安装 Pytho ...
- JS-缓冲运动基础结构
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 跟bWAPP学WEB安全(PHP代码)--SQL注入的一些技巧
背景 模拟环境还是 bWAPP,只不过这个bWAPP的SQL注入有点多,一一写意义不大,在这边就利用这个环境来尝试一些SQL注入的技巧.并研究下PHP的防御代码. 普通的bWAPPSQL注入的简单介绍 ...
- 复杂度O(n)计算
https://blog.csdn.net/daijin888888/article/details/66970902 一.算法的时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规 ...
- 危险的浮点数float
今天写程序又以为我见鬼了!最后查出来发现原来又是浮点数搞的鬼! 情况大致是这样的,我想要测试向量运算的速度,所以要对一个浮点数向量进行求和运算,代码如下: int vect_size=10000000 ...
- vim配置函数跳转(c/c++)
暂时草记一下,有时间好好整理 ctags 如果只是查看函数与变量是在哪里定义的,用ctags就可以了. ctrl+]跳到定义的地方,ctrl+t跳回来. 想要像IDE那样在旁边显示函数与变量列表,用t ...
- vim ctrl+v垂直选取产生 e353错误
原因是/etc/vim/vimrc中map ctrl+v为其他作用了 解决方法: 删除掉map<C-V>...项即可
- Spark2 ML包之决策树分类Decision tree classifier详细解说
所用数据源,请参考本人博客http://www.cnblogs.com/wwxbi/p/6063613.html 1.导入包 import org.apache.spark.sql.SparkSess ...
- 这个代码给所有带有name属性的链接加了一个背景色
jQuery起点教程之使用选择器和事件jQuery提供两种方式来选择html的elements: 第一种是用CSS和Xpath选择器联合起来形成一个字符串来传送到jQuery的构造器(如:$(&quo ...