java 读写 excle 完整版
pom.xml
<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>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.baozun.util.DecryptAndEncrypt</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass></mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.3.5.RELEASE</version>
<configuration>
<mainClass>com.bj.util.ExcelReaderWrite</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
部分参考:http://www.codepub.cn/2017/06/13/Maven-introduces-local-dependency-jar-to-executable-jar-packages/
https://www.cnblogs.com/523823-wu/p/7635358.html
代码部分
package com.baozun.util; import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class ExcelReaderWrite {
private static final String EXCEL_XLS = "xls";
private static final String EXCEL_XLSX = "xlsx";
private static String filePath=null;
private static String sheetName=null;
private static Workbook workBook;
private static Sheet sheet;
private Object[][] results;
private List<List<String>> listData;
private static FileInputStream in ; public ExcelReaderWrite(String filePath, String sheetName) {
this.filePath = filePath;
this.sheetName = sheetName;
innit();
} public void innit() {
workBook = getWorkbok(filePath);
sheet = workBook.getSheet(sheetName);
} public Workbook getWorkbok(String filePath) {
try {
File file = new File(filePath);
if (file.exists()) {
in = new FileInputStream(file);
if (file.getName().endsWith(EXCEL_XLS)) { //Excel 2003 return new HSSFWorkbook(in);
} else if (file.getName().endsWith(EXCEL_XLSX)) { // Excel 2007/2010
return new XSSFWorkbook(in);
}
} else {
System.out.println(filePath + "不存在 !");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
} public void setCellData(int rowNum, int colNum, String content) {
rowNum -= 1;
colNum -= 1;
FileOutputStream out = null;
if (null == sheet.getRow(rowNum)) {
Row row = sheet.createRow(rowNum);
if (null == row.getCell(colNum)) {
row.createCell(colNum).setCellValue(content);
} else {
row.getCell(colNum).setCellValue(content);
}
} else {
sheet.getRow(rowNum).createCell(colNum).setCellValue(content);
} try {
out = new FileOutputStream(filePath);
workBook.write(out);
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try { out.flush();
out.close();
in.close();
innit(); } catch (Exception e) {
e.printStackTrace();
}
} }
private String getCellValue(Cell cell) {
String cellValue = "";
DataFormatter formatter = new DataFormatter();
if (cell != null) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
cellValue = formatter.formatCellValue(cell);
} else {
double value = cell.getNumericCellValue();
int intValue = (int) value;
cellValue = value - intValue == 0 ? String.valueOf(intValue) : String.valueOf(value);
}
break;
case Cell.CELL_TYPE_STRING:
cellValue = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_BOOLEAN:
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
cellValue = String.valueOf(cell.getCellFormula());
break;
case Cell.CELL_TYPE_BLANK:
cellValue = "";
break;
case Cell.CELL_TYPE_ERROR:
cellValue = "";
break;
default:
cellValue = cell.toString().trim();
break;
}
}
return cellValue.trim();
}
public String getCellData(String sheetName, int rowNum, int colNum) {
if (rowNum <= 0 || colNum <= 0) {
return null;
} else if (workBook.getSheet(sheetName) == null || workBook.getSheet(sheetName).getRow(rowNum - 1) == null) { return filePath + " 中 " + sheetName + " 不存在,或者" + rowNum + " 行不存在 ! ";
} else {
return getCellValue(workBook.getSheet(sheetName).getRow(rowNum - 1).getCell(colNum - 1));
} }
public String getCellData(int rowNum, int colNum) {
if (rowNum <= 0 || colNum <= 0) {
return null;
} else if (workBook.getSheet(sheetName) == null || workBook.getSheet(sheetName).getRow(rowNum - 1) == null) { return filePath + " 中 " + sheetName + " 不存在,或者" + rowNum + " 行不存在 ! ";
} else {
return getCellValue(workBook.getSheet(sheetName).getRow(rowNum - 1).getCell(colNum - 1));
} }
private List<List<String>> getSheetData() {
listData = new ArrayList<List<String>>();
int numOfRows = sheet.getLastRowNum()+1;
System.out.println("sheet.getLastRowNum()="+sheet.getLastRowNum());
for (int i = 0; i < numOfRows; i++) {
Row row = sheet.getRow(i);
Map<String, String> map = new HashMap<String, String>();
List<String> list = new ArrayList<String>();
if (row != null) {
for (int j = 0; j < row.getLastCellNum(); j++) {
Cell cell = row.getCell(j);
list.add(this.getCellValue(cell));
}
}
listData.add(list);
} return listData ;
} public void printSheetData() {
// 测试数据excel数据用 ; List<List<String>> list = getSheetData();
System.out.println("总共有 "+list.size()+" 行!");
for (int i = 0; i < list.size(); i++) {
System.out.println("第 "+(i+1)+" 行有 "+list.get(i).size()+" 单元格有值 : "+list.get(i).toString());
}
} public static void main(String[] args) {
// String filePath_1 = "D:/writeExcel.xlsx";
String filePath_2 = "D:/writeExcel97.xls";
String sheetName = "Sheet1";
/* int lastNum_1 = new ExcelReaderWrite(filePath_1, sheetName).getWorkbok().getSheet(sheetName).getLastrowNum();
int lastNum_2 = new ExcelReaderWrite(filePath, sheetName).getWorkbok().getSheet(sheetName).getLastrowNum();
System.out.println(lastNum_1);
System.out.println(lastNum_2);
for (int i = 0; i <10 ; i++) {
new ExcelReaderWrite(filePath_1, sheetName).setCellData(i,3,filePath_1+"_"+String.valueOf(System.currentTimeMillis()));
new ExcelReaderWrite(filePath_2, sheetName).setCellData(i,3,filePath_2+"_"+String.valueOf(System.currentTimeMillis()));
}
String dataValue= new ExcelReaderWrite(filePath_1, sheetName).getCellData(sheetName, 1, 1);
System.out.println(dataValue);
new ExcelReaderWrite(filePath_1, sheetName).printSheetData();
new ExcelReaderWrite(filePath_2, sheetName).printSheetData();
*/
ExcelReaderWrite eh= new ExcelReaderWrite(filePath_2, sheetName);
eh.setCellData(1,1,"1");
eh.setCellData(1,2,"1_2");
eh.printSheetData();
eh.setCellData(2,1,"22_1");
eh.setCellData(2,2,"22_2"); eh.printSheetData();
System.out.println("2row2col="+eh.getCellData(2, 2));
// eh.setCellData(1,3,String.valueOf(System.currentTimeMillis()));
// eh.setCellData(1,4,String.valueOf(System.currentTimeMillis()));
// eh.setCellData(1, 5, String.valueOf(System.currentTimeMillis()));
// eh.setCellData(2,5,String.valueOf(System.currentTimeMillis()));
// eh.setCellData(2,5,String.valueOf(System.currentTimeMillis()));
// eh.setCellData(2,5,String.valueOf(System.currentTimeMillis()));
// eh.setCellData(2,5,String.valueOf(System.currentTimeMillis())); // eh.setCellData(3,2,String.valueOf(System.currentTimeMillis()));
// eh.setCellData(3,3,String.valueOf(System.currentTimeMillis()));
//s eh.setCellData(3,4,String.valueOf(System.currentTimeMillis())); } }
解决了 一个对象重复写入时的错误 ;
java 读写 excle 完整版的更多相关文章
- java 读写excle
2014-04-16 20:38:20 java读写excel 晚上打算研究如何c来编写
- java环境变量完整版
jdk默认安装 Key: JAVA_HOME(新建) Value: C:\Program Files\Java\jdk1.8.0_25 Key: Path(编辑) Value: %JAVA_HOME% ...
- 详解介绍Selenium常用API的使用--Java语言(完整版)
参考:http://www.testclass.net/selenium_java/ 一共分为二十个部分:环境安装之Java.环境安装之IntelliJ IDEA.环境安装之selenium.sele ...
- java读取文件完整版
public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in ...
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和 ...
- MySQL5.6 Replication主从复制(读写分离) 配置完整版
MySQL5.6 Replication主从复制(读写分离) 配置完整版 MySQL5.6主从复制(读写分离)教程 1.MySQL5.6开始主从复制有两种方式: 基于日志(binlog): 基于GTI ...
- Java编程思想(第4版) 中文清晰PDF完整版
Java编程思想(第4版) 中文清晰PDF完整版 [日期:2014-08-11] 来源:Linux社区 作者:Linux [字体:大 中 小] <Java编程思想>这本书赢得了全 ...
- JAVA在线观看视频教程完整版
今天给大家介绍一下JAVA在线观看视频教程完整版,我们知道Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语 ...
- 剑指offer】Java版代码(完整版)
转自:剑指offer]Java版代码(完整版) 转自:[剑指offer] JAVA版题解(完整版)
随机推荐
- Scala学习之路 (一)Scala的安装
1.Scala下载 版本选择,看spark官网 http://spark.apache.org/docs/latest/ spark2.3.0版本是用2.11版本的Scala进行开发的,所以此处下载S ...
- Shell学习心得(二):传递参数、运算符
1.传递参数 可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 向脚本传递三个参数, ...
- C# 含转义符的字符串处理
如果一个字符串中含有特殊字符,比如"号,如何将一个含有引号"的字符串赋值给一个变量. string a = @"sfsfsf"""; str ...
- Web安全基础实践
Web安全基础实践 标签(空格分隔): <> 目录 基础问题回答 WebGoat下载安装 SQL注入攻击 - SQL字符串注入(String SQL Injection) - 数字型SQL ...
- 11、可扩展MySQL+12、高可用
11.1.扩展MySQL 静态分片:根据key取hash,然后取模: 动态分片:用一个表来维护key与分片id的关系: 11.2.负载均衡 12. 12.2导致宕机得原因: 35%环境+35%性能+2 ...
- 单片机程序在内存和FLASH中的空间分配
本文转载于的tietao的博客!!!http://blog.csdn.net/tietao/article/details/8172411 *******防止自己忘记,固备之. 一句话:基于速度问题, ...
- 学习JAVA第一章的心得
我抱着万分期待的心情开始了我第一天的JAVA学习课程,其实在第一开始的时候我对计算机行业便有很高地兴趣了.这主要归功于我真的从很小开始就就接触了电脑.进入学校以来,我就很期待老师会怎样教我们,会怎样带 ...
- [CF1039D]You Are Given a Tree[贪心+根号分治]
题意 给你\(n\)个点的树,其中一个简单路径的集合被称为\(k\)合法当且仅当树的每个节点最多属于一条路径,且每条路径包含\(k\)个节点.对于每个\(k(k \in [1,n])\),输出最多的\ ...
- PowerBI开发 第二篇:数据建模
在分析数据时,不可能总是对单个数据表进行分析,有时需要把多个数据表导入到PowerBI中,通过多个表中的数据及其关系来执行一些复杂的数据分析任务,因此,为准确计算分析的结果,需要在数据建模中,创建数据 ...
- JQuery快速入门-Ajax
一.AJAX概述 概念:AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). 优点:通过在后台与服务器进行少量数据交换,AJAX ...