刚刚接触POI,想要处理Excel的签署,网上百度了好多资料都没有直接相关的例子。
自己根据收集的资料完成了需求,记录一下。
1.开发环境
开发工具:MyEclipse 10;
jar包:POI-3.7等;
2.需求描述
通过POI处理多Sheet页的Excel,每个Excel都有一行作为签署行,每行都有单元格内容为:编制,校对,审核,批准的单元格,但是单元格位置不固定,坐标随机。
需要获取到内容为“编制,校对,审核,批准”的单元格,并在其右侧相邻的单元格进行签署(写入对应的签署人姓名);
3.代码实现
package com.ck.excel; //引入必要的jar包 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class SignatureExcel { /** * @param args */ public static String fileString = "test.xlsx"; @SuppressWarnings("rawtypes") public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub try { FileInputStream fs = new FileInputStream(new File(fileString)); FileOutputStream fStream = new FileOutputStream(new File("test1.xlsx")); XSSFWorkbook wb = new XSSFWorkbook(fs); //first sheet's index is 0; XSSFSheet sheet; XSSFRow row; XSSFCell cell; for (Iterator witerator = wb.iterator(); witerator.hasNext();) { sheet = (XSSFSheet) witerator.next(); for (Iterator rIterator = sheet.rowIterator();rIterator.hasNext();) { row = (XSSFRow) rIterator.next(); for (Iterator cIterator = row.iterator(); cIterator .hasNext();) { cell = (XSSFCell) cIterator.next(); if (!getCellValue(cell).equalsIgnoreCase("") && getCellValue(cell)!=null) { if(getCellValue(cell).equalsIgnoreCase("编制")){ XSSFCell tCell = row.createCell(cell.getColumnIndex()+1); tCell.setCellValue("111"); }else if (getCellValue(cell).equalsIgnoreCase("校对")) { XSSFCell tCell = row.createCell(cell.getColumnIndex()+1); tCell.setCellValue("222"); }else if (getCellValue(cell).equalsIgnoreCase("审核")) { XSSFCell tCell = row.createCell(cell.getColumnIndex()+1); tCell.setCellValue("333"); }else if (getCellValue(cell).equalsIgnoreCase("批准")) { XSSFCell tCell = row.createCell(cell.getColumnIndex()+1); tCell.setCellValue("444"); } } } } } wb.write(fStream); fs.close(); fStream.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 获取单元格的值 public static String getCellValue(XSSFCell cell) { String value = ""; int cellType = 0; if (cell != null) { cellType = cell.getCellType(); //System.out.println("XSSFCell.CELL_TYPE_STRING:"+ XSSFCell.CELL_TYPE_STRING+";cellType:"+cellType); if (cellType == XSSFCell.CELL_TYPE_STRING) { //System.out.println("IN EXCEL!!!"); value = cell.getStringCellValue(); } } return value; } }
相关推荐
Apache POI 是一个开源项目,专门用于处理 Microsoft Office 格式的文件,如 Word、Excel 和 PowerPoint。在本示例中,我们将重点讨论如何使用 Apache POI 来生成 Excel 文件,并进行单元格的合并操作。 首先,我们...
### 使用Apache POI获取含有合并单元格的Excel数据并存储为List 在处理Excel文档时,经常需要读取其中的数据并进行进一步的操作。当Excel文件中含有合并单元格时,简单的读取方法可能无法准确地获取到所有数据。...
在IT行业中,处理数据是日常任务之一,而Excel作为广泛使用的电子表格软件,其数据处理需求尤为常见。本文将深入探讨如何使用Java的Apache POI库来读取Excel文件,并处理其中合并单元格的数据,同时将这些数据存储到...
1. **合并单元格**:在 Excel 中,可以通过选择相邻的多个单元格并将其合并为一个单元格来简化数据展示或实现特定布局效果。合并单元格通常会将左上角单元格的内容作为整个合并区域的内容。 2. **CellRangeAddress**...
POI操作Excel 合并单元格 边框问题解决方法,这个方法是我亲自测试,并运用于项目中的,可以放心使用,还一并写出了很多注释,其中有写poi的bug的解决方法
在Excel中,合并单元格意味着多个相邻的单元格被合并成一个大的单元格,其内容占据合并后的所有空间。在Java中使用Apache POI进行操作,我们需要使用`XSSFWorkbook`(对于.xlsx文件)或`HSSFWorkbook`(对于.xls文件...
利用poi进行excel相同内容合并单元格,只摘要了传入部分功能,请关注addMergedRegion方法
这个“excel poi工具类”是利用Apache POI库来实现对Excel文件进行导入、导出、合并单元格以及处理计算公式的功能。下面我们将深入探讨这些知识点。 **1. Apache POI库介绍** Apache POI是一个开源项目,它为Java...
在Java开发中,当你需要处理Excel数据时,POI库是一个强大的工具。本压缩包包含了一些关键资源,帮助你理解和使用Java POI处理Excel数据。 首先,`问题.docx`可能是你在使用POI过程中遇到的问题汇总,它可能包含了...
在探讨“poi读取合并单元格帮助类”的知识点时,我们首先需要理解Apache POI库在Java中的作用以及如何处理Excel文件中的合并单元格。Apache POI是一个开源的API,它允许程序创建、修改和显示Microsoft Office格式的...
本篇文章主要探讨如何利用POI在Excel单元格中添加超链接,并设置字体颜色。 首先,为了使用Apache POI库,你需要在Maven项目的pom.xml文件中引入以下依赖: ```xml <!-- 主要的POI库 --> <groupId>org.apache...
关于java EXCEL poi 合并后无法显示或无法设置边框问题 【本人亲测】 excel poi 新手! 坑了1.5天!
Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,尤其是Excel。在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持...
// 在第0列创建一个单元格并设置其值为"Hello World!" Cell cell = row.createCell(0); cell.setCellValue("Hello World!"); // 将工作簿写入到文件 try (FileOutputStream fileOut = new FileOutputStream(...
在VC++环境中,读取Excel特定单元格的数据通常涉及到Microsoft的COM组件,即Microsoft Office的自动化接口。这个接口允许开发者通过编程方式与Excel交互,包括打开工作簿、选择工作表、读取或写入单元格数据等操作。...
Jakarta POI 是 Apache POI 的早期项目名称,它提供了一组 API 来处理 Microsoft Office 文件格式,特别是针对 Excel(`.xls` 和 `.xlsx`)和 Word(`.doc` 和 `.docx`)文件。Apache POI 项目主要由以下几个子项目...
Java用POI解析excel并获取所有单元格数据的实例 Java POI库是Apache组织提供的一个开源的Java API,用来处理Microsoft Office文件格式,如Excel、Word、PowerPoint等。其中,POI提供了excel文件的读写操作,允许...
在Java开发中,Apache POI库是处理Microsoft Office文件(如Word、Excel)的强大工具。本文将深入探讨如何使用Java POI生成带有货币格式的Excel文件,这在财务报告和其他需要精确货币显示的应用场景中尤为关键。 ##...