java读取excel获取数据写入到另外一个excel
pom.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.nihaorz</groupId>
- <artifactId>excel_hezhan</artifactId>
- <version>1.0-SNAPSHOT</version>
- <dependencies>
- <dependency>
- <groupId>net.sf.jxls</groupId>
- <artifactId>jxls-core</artifactId>
- <version>1.0.6</version>
- </dependency>
- <dependency>
- <groupId>net.sourceforge.jexcelapi</groupId>
- <artifactId>jxl</artifactId>
- <version>2.6.12</version>
- </dependency>
- </dependencies>
- </project>
ExcelReader.java
- package com.nihaorz;
- import org.apache.poi.ss.usermodel.Cell;
- import org.apache.poi.ss.usermodel.DataFormatter;
- import org.apache.poi.ss.usermodel.DateUtil;
- 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.ss.usermodel.WorkbookFactory;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class ExcelReader {
- private String filePath;
- private String sheetName;
- private Workbook workBook;
- private Sheet sheet;
- private List<String> columnHeaderList;
- private List<List<String>> listData;
- private List<Map<String,String>> mapData;
- private boolean flag;
- public ExcelReader(String filePath, String sheetName) {
- this.filePath = filePath;
- this.sheetName = sheetName;
- this.flag = false;
- this.load();
- }
- public Map<String, String> getAllData(){
- Map<String, String> map = new HashMap();
- String prefix = "LEFT(\"";
- String suffix = "\",19)";
- for(int i = 0; i < listData.size(); i++){
- List<String> list = listData.get(i);
- List<String> list1 = new ArrayList();
- for(int j = 0; j < list.size(); j++){
- String str = list.get(j);
- if(str.startsWith(prefix) && str.endsWith(suffix)){
- str = str.substring(prefix.length(), str.lastIndexOf(suffix));
- }
- list1.add(str);
- }
- map.put(list1.get(0), list.get(1));
- }
- return map;
- }
- private void load() {
- FileInputStream inStream = null;
- try {
- inStream = new FileInputStream(new File(filePath));
- workBook = WorkbookFactory.create(inStream);
- sheet = workBook.getSheet(sheetName);
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- try {
- if(inStream!=null){
- inStream.close();
- }
- } catch (IOException 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 (DateUtil.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();
- }
- private void getSheetData() {
- listData = new ArrayList<List<String>>();
- mapData = new ArrayList<Map<String, String>>();
- columnHeaderList = new ArrayList<String>();
- int numOfRows = sheet.getLastRowNum() + 1;
- 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);
- if (i == 0){
- columnHeaderList.add(getCellValue(cell));
- }
- else{
- map.put(columnHeaderList.get(j), this.getCellValue(cell));
- }
- list.add(this.getCellValue(cell));
- }
- }
- if (i > 0){
- mapData.add(map);
- }
- listData.add(list);
- }
- flag = true;
- }
- public String getCellData(int row, int col){
- if(row<=0 || col<=0){
- return null;
- }
- if(!flag){
- this.getSheetData();
- }
- if(listData.size()>=row && listData.get(row-1).size()>=col){
- return listData.get(row-1).get(col-1);
- }else{
- return null;
- }
- }
- public String getCellData(int row, String headerName){
- if(row<=0){
- return null;
- }
- if(!flag){
- this.getSheetData();
- }
- if(mapData.size()>=row && mapData.get(row-1).containsKey(headerName)){
- return mapData.get(row-1).get(headerName);
- }else{
- return null;
- }
- }
- }
ExcelTest.java
- package com.nihaorz;
- import jxl.Cell;
- import jxl.Sheet;
- import jxl.Workbook;
- import jxl.write.Label;
- import jxl.write.WritableCellFormat;
- import jxl.write.WritableFont;
- import jxl.write.WritableSheet;
- import jxl.write.WritableWorkbook;
- import java.io.File;
- import java.util.Map;
- public class ExcelTest {
- public static void main(String[] args) throws Exception {
- ExcelReader eh = new ExcelReader("C:\\Users\\Nihaorz\\Desktop\\贺站.xlsx", "Sheet1");
- eh.getCellData(1,1);
- Map<String, String> map = eh.getAllData();
- String filePath = "C:\\Users\\Nihaorz\\Desktop\\待修改.xls";
- // Excel获得文件
- Workbook workBook = Workbook.getWorkbook(new File(filePath));
- // 打开一个文件的副本,并且指定数据写回到原文件
- WritableWorkbook book = Workbook.createWorkbook(new File(filePath), workBook);
- Sheet sheet = book.getSheet(0);
- WritableSheet wsheet = book.getSheet(0);
- int colunms = sheet.getColumns();
- for (int i = 0; i < sheet.getRows(); i++) {
- String number = sheet.getCell(4, i).getContents().trim();
- if(map.containsKey(number)){
- Cell cell = wsheet.getCell(13, i);
- String address = cell.getContents().trim();
- if(address == null || "".equals(address)){
- Label label = new Label(colunms, i, map.get(number), getDataCellFormat());
- wsheet.addCell(label);
- }
- }
- }
- book.write();
- book.close();
- }
- public static WritableCellFormat getDataCellFormat() {
- WritableFont wf = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD, false);
- WritableCellFormat wcf = new WritableCellFormat(wf);
- return wcf;
- }
- }
java读取excel获取数据写入到另外一个excel的更多相关文章
- Python用xlrd读取Excel数据到list中再用xlwt把数据写入到新的Excel中
一.先用xlrd读取Excel数据到list列表中(存入列表中的数据如下图所示) import xlrd as xd #导入需要的包 import xlwt data =xd.open_workboo ...
- Java学习-022-Properties 文件数据写入
Properties 配置文件写入主要通过 Properties.setProperty 和 Properties.store 两个方法,此文以一个简单的 properties 文件写入源码做示例. ...
- 通过java读取HDFS的数据 (转)
原文链接:通过java读取HDFS的数据 通过JAVA直接读取HDFS中的时候,一定会用到FSDataInputStream类,通过FSDataInputStream以流的形式从HDFS读数据代码如下 ...
- java读取PHP接口数据的实现方法(四)
PHP文件: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3 ...
- python 读取excel数据插入到另外一个excel
#-*-coding:utf-8-*- import xlrd import xlwt def excel_copy(dir_from, dir_to, sheet_name): '''从一个exce ...
- 【转载】SQL语句将一个表的数据写入到另一个表中
在日常的数据库运维过程中,有时候需要将Select查询出来的数据集写入到另一个数据表中,其中一种方式是通过存储过程循环写入数据,另一种简便的方式是直接使用Insert Into语句后面跟上Select ...
- SQL语句将一个表的数据写入到另一个表中
在日常的数据库运维过程中,有时候需要将Select查询出来的数据集写入到另一个数据表中,其中一种方式是通过存储过程循环写入数据,另一种简便的方式是直接使用Insert Into语句后面跟上Select ...
- Java读取Execl表格数据
在前面提到用java代码新建一个Execl 表格并添加数据到表格中, 这次写了一个读取Execl表格数据并添加导数据库中的案列 给定对方一个Execl模板表格,如果导入的Execl表格和预订的表格不相 ...
- [C#]将数据写入已存在的excel文件
测试如下(xls/xlsx): //将数据写入已存在Excel public static void writeExcel(string result, string filepath) { //1. ...
随机推荐
- WPF touch Scroll -触摸滚动
借鉴地址:http://matthamilton.net/touchscrolling-for-scrollviewer 改造后支持上下和左右鼠标拖动滚动: using System; using S ...
- Java函数式编程和lambda表达式
为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉代码要怎么做.说白了,函数式编程是基于 ...
- git 分支管理规范
保证master分支永远处于可部署的状态.禁止自接提交代码到master分支 开发分支基于master分支创建,命名规范如下: 如果是功能需求,分支命名为feature/xxx,xxx要具有描述性 如 ...
- Taro、Weex、Hippy 齐聚IMWebConf 2018!
IMWebConf 2018 前端大会,10 月 14 日重磅来袭! 想了解 2018 前端前沿技术和发展趋势?想挖掘前端更深远的价值?就在这个秋季,第七届 IMWebConf 大会重磅来袭,我们邀请 ...
- Appium-超过60s的应用场景如何处理
前言: 最近在搞appium自动化项目,遇到超过60s的应用场景时,总是报错报错.如何解决呢?见下文. 报错信息: 2018-05-21 14:03:42:253 - [HTTP] <-- PO ...
- Leetcode 2. Add Two Numbers(medium)
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- Leetcode 665. Non-decreasing Array(Easy)
Given an array with n integers, your task is to check if it could become non-decreasing by modifying ...
- echarts各个配置项详细说明总结
https://blog.csdn.net/sinat_34492035/article/details/70258557 https://blog.csdn.net/qq_34908167/arti ...
- elasticsearch elk最全java api 搜索 聚合、嵌套查询
目录 一. 一般查询... 2 (一) matchAllQuery(client). 2 (二) matchQuery(client);3 (三) multiMatchQuery(client);3 ...
- 快速为git添加一个用户
环境:用gitosis-admin管理git的权限. 前期git环境的搭建略去,主要给出快速添加一个用户的步骤: 在git bash中用“ssh-keygen -t rsa”生成公钥私钥,默认放到 “ ...