import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.*;
import java.util.Iterator;
/**
* Created by IntelliJ IDEA.
* User: tedeyang
* Date: 2009-6-4
* Time: 17:06:12
* To change this template use File | Settings | File Templates.
*/
public class ReadExcel {
public static void main(String[] args) throws Exception {
if(args.length<2)
new ReadExcel("D:\\Documents\\工作文档\\技术组\\考核\\技术使用调查\\", "result.xls");
else
new ReadExcel(args[0],args[1]);
}
Workbook book;
Sheet sheet;
ReadExcel(String fileDir, String resultFile) throws Exception {
File result = new File(fileDir, resultFile);
FileOutputStream out = new FileOutputStream(result);
book = new HSSFWorkbook();
sheet = book.createSheet();
File[] xlss = new File(fileDir).listFiles(new FilenameFilter() {
public boolean accept(File f, String s) {
//read xls
return (s.startsWith("实际开发技术调查表")) ;
}
});
int i = 1;
for(File f :xlss){
parseXls(f, sheet, i++);
}
book.write(out);
out.close();
}
/**
* This method is used to display the Excel content to command line.
*/
@SuppressWarnings("unchecked")
public void parseXls(File f, Sheet sheet, int i) throws Exception {
String depart = "";
InputStream inputStream = new FileInputStream(f);
POIFSFileSystem fileSystem = new POIFSFileSystem(inputStream);
HSSFWorkbook workBook = new HSSFWorkbook(fileSystem);
HSSFSheet s = workBook.getSheetAt(0);
Iterator rows = s.rowIterator();
String name = s.getRow(2).getCell(2).toString();
String n = f.getName();
name = n.substring(n.indexOf('-')+1,n.indexOf('.'));
setCellValue(0,i,name);
int count = 0;
System.out.println("人员:"+name);
while (rows.hasNext()) {
HSSFRow row = (HSSFRow) rows.next();
Iterator cells = row.cellIterator();
while (cells.hasNext()) {
HSSFCell cell = (HSSFCell) cells.next();
if (cell.getColumnIndex() < 2 || cell.getRowIndex() < 4) continue;
HSSFRichTextString richTextString = cell.getRichStringCellValue();
//create
if (cell.getCellType()==HSSFCell.CELL_TYPE_STRING) {
++count;
setCellValue(count,0,richTextString.getString());
setCellValue(count,i,value(cell));
}
}
}
inputStream.close();
}
private void setCellValue(int r, int c, String name) {
if(sheet.getRow(r)==null){
sheet.createRow(r).createCell(c).setCellValue(name);
}else if(sheet.getRow(r).getCell(c)==null){
sheet.getRow(r).createCell(c).setCellValue(name);
}else{
sheet.getRow(r).getCell(c).setCellValue(name);
}
}
private void setCellValue(int r, int c, double v) {
if(sheet.getRow(r)==null){
sheet.createRow(r).createCell(c).setCellValue(v);
}else if(sheet.getRow(r).getCell(c)==null){
sheet.getRow(r).createCell(c).setCellValue(v);
} else{
sheet.getRow(r).getCell(c).setCellValue(v);
}
}
private double value(HSSFCell cell) {
int color = cell.getCellStyle().getFillForegroundColor();
switch (color) {
case 42: //main use
return 5;
case 55: //a little
return 1;
case 23:
return 0; //never
default:
return 0;
}
}
}
偶然翻到以前为自己办公方便写的小程序,记录一下,因为POI的API用起来不是很直观。
分享到:
相关推荐
在这个场景中,我们关注的是如何使用POI来创建、读取和操作Excel文档。在Web项目中,这种功能通常用于数据导入导出,报表生成,或者任何需要与用户交换表格数据的场景。 **POI生成Excel** 生成Excel文件主要涉及...
- 使用了`HSSFWorkbook`类来读取模板文件,并对其中的`HSSFSheet`进行了操作。 - 通过循环遍历数据集,动态创建或更新行,并填充相应的数据。 - 还使用了`copyCellStyleOfRow`方法来复制行样式,确保新创建的行与...
使用poi读取写入复杂excel内容包括样式,工具类
通过以上步骤,你可以使用Apache POI有效地操作Excel模板,并将数据填充到新生成的文件中。这在报表生成、数据分析、批量导出等方面非常实用。记得在实际项目中,还要处理异常、优化性能,比如使用缓冲流、避免频繁...
以上就是使用Apache POI读取Excel数据并写入Word的基本流程。在实际应用中,你可能需要处理更复杂的情况,比如合并单元格、处理公式、格式转换等,这都需要对POI API有更深入的理解。同时,为了提高性能,可以考虑...
总结起来,通过Apache POI库,我们可以方便地使用Java读取Excel文件,处理合并单元格的数据,并将其存储到自定义的实体类中。这为后续的数据分析、业务逻辑处理或数据迁移提供了便利。在实际应用中,还可以根据具体...
HSSF提供了一个API,允许开发者用纯Java代码读取、写入和修改Excel文件。HSSF与POIFS(POI OLE 2 Property Set Facility)紧密关联,POIFS负责处理文件的存储结构,而HSSF则专注于Excel数据的逻辑表示。 HSSF API...
总的来说,ExcelUtil通过结合反射和Apache POI库,极大地简化了Java中Excel文件的读取工作,让开发者能够更专注于业务逻辑,而不是繁琐的文件操作。如果你在处理大量Excel数据时,希望提高效率,那么ExcelUtil是一个...
以上就是使用Apache POI进行Excel模板读取、复制工作表和复制行的操作,特别是处理合并单元格的详细步骤。在实际应用中,你可能还需要根据具体需求对数据进行填充、格式化等操作。如果在实践过程中遇到问题,可以...
1、POI_EXCEL包下分别有两个类,一个是读取excel内容,一个是想excel写入内容 2、cn.itcast包下的所有包,是为了实现从excel写入到数据库中,和从数据库写入到excel中 注意事项: 1、需要导入maven工程 2、使用...
本篇文章将详细讲解如何利用Apache POI库在Android环境中高效地处理大数据量的Excel文件,无论是2003的.xls格式还是2007及以后的.xlsx格式。 首先,我们需要在项目中引入Apache POI库。如果是Maven项目,可以在pom....
### POI Excel知识点详解 #### 一、Jakarta POI简介与Apache POI的作用 Jakarta POI 是 Apache POI 的早期项目名称,它提供了一组 API 来...希望本文能够帮助您更好地理解和使用 Apache POI 进行 Excel 文件的操作。
在Java编程领域,Apache POI库是一个非常重要的工具,它允许开发者处理...通过学习和理解`ReadExcelUtils.java`中的代码,开发者可以轻松地读取Excel文件的各个单元格内容,进而进行数据分析、报表生成等操作。
附带的`ExcelUtil.java`源码文件,通常是一个工具类,封装了使用Apache POI读取Excel文件的关键操作,比如打开文件、遍历工作表、读取单元格数据等。这样的工具类可以简化开发过程,避免重复编写基础代码。 使用...
标题中的“poi读取excel并输出到jsp页面”是指使用Apache POI库来处理Microsoft Excel文件,并将数据在JavaServer Pages (JSP) 页面上显示的技术。Apache POI 是一个开源项目,它允许开发者创建、修改和显示MS ...
标题提到的“poi读取Excel用到的jar包”指的是在Java项目中使用POI库进行Excel操作所需引入的依赖文件。这些jar包在描述中给出,包括了以下几个: 1. poi-ooxml-schemas-3.8-beta5-20111217.jar:这个文件包含了...
读取Excel的poi包,,读取Excel的poi包,,读取Excel的poi包,读取Excel的poi包读
标题中的“POI读取2007 Excel文件”指的是使用Apache POI库来解析和操作Microsoft Office Open XML (OOXML)格式的Excel文件,这种格式通常以.xlsx为扩展名。Apache POI是一个流行的Java库,它允许开发人员在Java应用...
android5使用poi读取excel,android5使用poi读取excel,android5使用poi读取excel,android5使用poi读取excel
总的来说,Apache POI是一个强大且灵活的库,能够帮助开发者在Java环境下方便地操作Excel文件,无论是简单的数据读取还是复杂的格式处理,都能游刃有余。不过要注意,处理大型Excel文件时,性能可能会成为一个问题,...