pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6.  
  7. <groupId>com.nihaorz</groupId>
  8. <artifactId>excel_hezhan</artifactId>
  9. <version>1.0-SNAPSHOT</version>
  10.  
  11. <dependencies>
  12. <dependency>
  13. <groupId>net.sf.jxls</groupId>
  14. <artifactId>jxls-core</artifactId>
  15. <version>1.0.6</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>net.sourceforge.jexcelapi</groupId>
  19. <artifactId>jxl</artifactId>
  20. <version>2.6.12</version>
  21. </dependency>
  22. </dependencies>
  23.  
  24. </project>

  

ExcelReader.java

  1. package com.nihaorz;
  2.  
  3. import org.apache.poi.ss.usermodel.Cell;
  4. import org.apache.poi.ss.usermodel.DataFormatter;
  5. import org.apache.poi.ss.usermodel.DateUtil;
  6. import org.apache.poi.ss.usermodel.Row;
  7. import org.apache.poi.ss.usermodel.Sheet;
  8. import org.apache.poi.ss.usermodel.Workbook;
  9. import org.apache.poi.ss.usermodel.WorkbookFactory;
  10.  
  11. import java.io.File;
  12. import java.io.FileInputStream;
  13. import java.io.IOException;
  14. import java.util.ArrayList;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18.  
  19. public class ExcelReader {
  20.  
  21. private String filePath;
  22. private String sheetName;
  23. private Workbook workBook;
  24. private Sheet sheet;
  25. private List<String> columnHeaderList;
  26. private List<List<String>> listData;
  27. private List<Map<String,String>> mapData;
  28. private boolean flag;
  29.  
  30. public ExcelReader(String filePath, String sheetName) {
  31. this.filePath = filePath;
  32. this.sheetName = sheetName;
  33. this.flag = false;
  34. this.load();
  35. }
  36.  
  37. public Map<String, String> getAllData(){
  38. Map<String, String> map = new HashMap();
  39. String prefix = "LEFT(\"";
  40. String suffix = "\",19)";
  41. for(int i = 0; i < listData.size(); i++){
  42. List<String> list = listData.get(i);
  43. List<String> list1 = new ArrayList();
  44. for(int j = 0; j < list.size(); j++){
  45. String str = list.get(j);
  46. if(str.startsWith(prefix) && str.endsWith(suffix)){
  47. str = str.substring(prefix.length(), str.lastIndexOf(suffix));
  48. }
  49. list1.add(str);
  50. }
  51. map.put(list1.get(0), list.get(1));
  52. }
  53. return map;
  54. }
  55.  
  56. private void load() {
  57. FileInputStream inStream = null;
  58. try {
  59. inStream = new FileInputStream(new File(filePath));
  60. workBook = WorkbookFactory.create(inStream);
  61. sheet = workBook.getSheet(sheetName);
  62. } catch (Exception e) {
  63. e.printStackTrace();
  64. }finally{
  65. try {
  66. if(inStream!=null){
  67. inStream.close();
  68. }
  69. } catch (IOException e) {
  70. e.printStackTrace();
  71. }
  72. }
  73. }
  74.  
  75. private String getCellValue(Cell cell) {
  76. String cellValue = "";
  77. DataFormatter formatter = new DataFormatter();
  78. if (cell != null) {
  79. switch (cell.getCellType()) {
  80. case Cell.CELL_TYPE_NUMERIC:
  81. if (DateUtil.isCellDateFormatted(cell)) {
  82. cellValue = formatter.formatCellValue(cell);
  83. } else {
  84. double value = cell.getNumericCellValue();
  85. int intValue = (int) value;
  86. cellValue = value - intValue == 0 ? String.valueOf(intValue) : String.valueOf(value);
  87. }
  88. break;
  89. case Cell.CELL_TYPE_STRING:
  90. cellValue = cell.getStringCellValue();
  91. break;
  92. case Cell.CELL_TYPE_BOOLEAN:
  93. cellValue = String.valueOf(cell.getBooleanCellValue());
  94. break;
  95. case Cell.CELL_TYPE_FORMULA:
  96. cellValue = String.valueOf(cell.getCellFormula());
  97. break;
  98. case Cell.CELL_TYPE_BLANK:
  99. cellValue = "";
  100. break;
  101. case Cell.CELL_TYPE_ERROR:
  102. cellValue = "";
  103. break;
  104. default:
  105. cellValue = cell.toString().trim();
  106. break;
  107. }
  108. }
  109. return cellValue.trim();
  110. }
  111.  
  112. private void getSheetData() {
  113. listData = new ArrayList<List<String>>();
  114. mapData = new ArrayList<Map<String, String>>();
  115. columnHeaderList = new ArrayList<String>();
  116. int numOfRows = sheet.getLastRowNum() + 1;
  117. for (int i = 0; i < numOfRows; i++) {
  118. Row row = sheet.getRow(i);
  119. Map<String, String> map = new HashMap<String, String>();
  120. List<String> list = new ArrayList<String>();
  121. if (row != null) {
  122. for (int j = 0; j < row.getLastCellNum(); j++) {
  123. Cell cell = row.getCell(j);
  124. if (i == 0){
  125. columnHeaderList.add(getCellValue(cell));
  126. }
  127. else{
  128. map.put(columnHeaderList.get(j), this.getCellValue(cell));
  129. }
  130. list.add(this.getCellValue(cell));
  131. }
  132. }
  133. if (i > 0){
  134. mapData.add(map);
  135. }
  136. listData.add(list);
  137. }
  138. flag = true;
  139. }
  140.  
  141. public String getCellData(int row, int col){
  142. if(row<=0 || col<=0){
  143. return null;
  144. }
  145. if(!flag){
  146. this.getSheetData();
  147. }
  148. if(listData.size()>=row && listData.get(row-1).size()>=col){
  149. return listData.get(row-1).get(col-1);
  150. }else{
  151. return null;
  152. }
  153. }
  154.  
  155. public String getCellData(int row, String headerName){
  156. if(row<=0){
  157. return null;
  158. }
  159. if(!flag){
  160. this.getSheetData();
  161. }
  162. if(mapData.size()>=row && mapData.get(row-1).containsKey(headerName)){
  163. return mapData.get(row-1).get(headerName);
  164. }else{
  165. return null;
  166. }
  167. }
  168.  
  169. }

  

ExcelTest.java

  1. package com.nihaorz;
  2.  
  3. import jxl.Cell;
  4. import jxl.Sheet;
  5. import jxl.Workbook;
  6. import jxl.write.Label;
  7. import jxl.write.WritableCellFormat;
  8. import jxl.write.WritableFont;
  9. import jxl.write.WritableSheet;
  10. import jxl.write.WritableWorkbook;
  11.  
  12. import java.io.File;
  13. import java.util.Map;
  14.  
  15. public class ExcelTest {
  16.  
  17. public static void main(String[] args) throws Exception {
  18. ExcelReader eh = new ExcelReader("C:\\Users\\Nihaorz\\Desktop\\贺站.xlsx", "Sheet1");
  19. eh.getCellData(1,1);
  20. Map<String, String> map = eh.getAllData();
  21.  
  22. String filePath = "C:\\Users\\Nihaorz\\Desktop\\待修改.xls";
  23. // Excel获得文件
  24. Workbook workBook = Workbook.getWorkbook(new File(filePath));
  25. // 打开一个文件的副本,并且指定数据写回到原文件
  26. WritableWorkbook book = Workbook.createWorkbook(new File(filePath), workBook);
  27.  
  28. Sheet sheet = book.getSheet(0);
  29. WritableSheet wsheet = book.getSheet(0);
  30. int colunms = sheet.getColumns();
  31. for (int i = 0; i < sheet.getRows(); i++) {
  32. String number = sheet.getCell(4, i).getContents().trim();
  33. if(map.containsKey(number)){
  34. Cell cell = wsheet.getCell(13, i);
  35. String address = cell.getContents().trim();
  36. if(address == null || "".equals(address)){
  37. Label label = new Label(colunms, i, map.get(number), getDataCellFormat());
  38. wsheet.addCell(label);
  39. }
  40. }
  41. }
  42. book.write();
  43. book.close();
  44. }
  45.  
  46. public static WritableCellFormat getDataCellFormat() {
  47. WritableFont wf = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD, false);
  48. WritableCellFormat wcf = new WritableCellFormat(wf);
  49. return wcf;
  50. }
  51.  
  52. }

  

java读取excel获取数据写入到另外一个excel的更多相关文章

  1. Python用xlrd读取Excel数据到list中再用xlwt把数据写入到新的Excel中

    一.先用xlrd读取Excel数据到list列表中(存入列表中的数据如下图所示) import xlrd as xd #导入需要的包 import xlwt data =xd.open_workboo ...

  2. Java学习-022-Properties 文件数据写入

    Properties 配置文件写入主要通过 Properties.setProperty 和 Properties.store 两个方法,此文以一个简单的 properties 文件写入源码做示例. ...

  3. 通过java读取HDFS的数据 (转)

    原文链接:通过java读取HDFS的数据 通过JAVA直接读取HDFS中的时候,一定会用到FSDataInputStream类,通过FSDataInputStream以流的形式从HDFS读数据代码如下 ...

  4. 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 ...

  5. python 读取excel数据插入到另外一个excel

    #-*-coding:utf-8-*- import xlrd import xlwt def excel_copy(dir_from, dir_to, sheet_name): '''从一个exce ...

  6. 【转载】SQL语句将一个表的数据写入到另一个表中

    在日常的数据库运维过程中,有时候需要将Select查询出来的数据集写入到另一个数据表中,其中一种方式是通过存储过程循环写入数据,另一种简便的方式是直接使用Insert Into语句后面跟上Select ...

  7. SQL语句将一个表的数据写入到另一个表中

    在日常的数据库运维过程中,有时候需要将Select查询出来的数据集写入到另一个数据表中,其中一种方式是通过存储过程循环写入数据,另一种简便的方式是直接使用Insert Into语句后面跟上Select ...

  8. Java读取Execl表格数据

    在前面提到用java代码新建一个Execl 表格并添加数据到表格中, 这次写了一个读取Execl表格数据并添加导数据库中的案列 给定对方一个Execl模板表格,如果导入的Execl表格和预订的表格不相 ...

  9. [C#]将数据写入已存在的excel文件

    测试如下(xls/xlsx): //将数据写入已存在Excel public static void writeExcel(string result, string filepath) { //1. ...

随机推荐

  1. WPF touch Scroll -触摸滚动

    借鉴地址:http://matthamilton.net/touchscrolling-for-scrollviewer 改造后支持上下和左右鼠标拖动滚动: using System; using S ...

  2. Java函数式编程和lambda表达式

    为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉代码要怎么做.说白了,函数式编程是基于 ...

  3. git 分支管理规范

    保证master分支永远处于可部署的状态.禁止自接提交代码到master分支 开发分支基于master分支创建,命名规范如下: 如果是功能需求,分支命名为feature/xxx,xxx要具有描述性 如 ...

  4. Taro、Weex、Hippy 齐聚IMWebConf 2018!

    IMWebConf 2018 前端大会,10 月 14 日重磅来袭! 想了解 2018 前端前沿技术和发展趋势?想挖掘前端更深远的价值?就在这个秋季,第七届 IMWebConf 大会重磅来袭,我们邀请 ...

  5. Appium-超过60s的应用场景如何处理

    前言: 最近在搞appium自动化项目,遇到超过60s的应用场景时,总是报错报错.如何解决呢?见下文. 报错信息: 2018-05-21 14:03:42:253 - [HTTP] <-- PO ...

  6. Leetcode 2. Add Two Numbers(medium)

    You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...

  7. 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 ...

  8. echarts各个配置项详细说明总结

    https://blog.csdn.net/sinat_34492035/article/details/70258557 https://blog.csdn.net/qq_34908167/arti ...

  9. elasticsearch elk最全java api 搜索 聚合、嵌套查询

    目录 一. 一般查询... 2 (一) matchAllQuery(client). 2 (二) matchQuery(client);3 (三) multiMatchQuery(client);3 ...

  10. 快速为git添加一个用户

    环境:用gitosis-admin管理git的权限. 前期git环境的搭建略去,主要给出快速添加一个用户的步骤: 在git bash中用“ssh-keygen -t rsa”生成公钥私钥,默认放到 “ ...