`
tedeyang
  • 浏览: 326115 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用poi进行简单地excel读取操作(统计调查表并绘图)

    博客分类:
  • JAVA
阅读更多
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 POI操作Excel POI读取Excel POI类库

    在这个场景中,我们关注的是如何使用POI来创建、读取和操作Excel文档。在Web项目中,这种功能通常用于数据导入导出,报表生成,或者任何需要与用户交换表格数据的场景。 **POI生成Excel** 生成Excel文件主要涉及...

    poi excel 模板读取并导出带公式的excel文档

    - 使用了`HSSFWorkbook`类来读取模板文件,并对其中的`HSSFSheet`进行了操作。 - 通过循环遍历数据集,动态创建或更新行,并填充相应的数据。 - 还使用了`copyCellStyleOfRow`方法来复制行样式,确保新创建的行与...

    使用poi读取、写入复杂excel工具类(包含样式)

    使用poi读取写入复杂excel内容包括样式,工具类

    poi 操作excel模板

    通过以上步骤,你可以使用Apache POI有效地操作Excel模板,并将数据填充到新生成的文件中。这在报表生成、数据分析、批量导出等方面非常实用。记得在实际项目中,还要处理异常、优化性能,比如使用缓冲流、避免频繁...

    利用POI读取excel写入到word

    以上就是使用Apache POI读取Excel数据并写入Word的基本流程。在实际应用中,你可能需要处理更复杂的情况,比如合并单元格、处理公式、格式转换等,这都需要对POI API有更深入的理解。同时,为了提高性能,可以考虑...

    POI读取Excel合并单元格并储存

    总结起来,通过Apache POI库,我们可以方便地使用Java读取Excel文件,处理合并单元格的数据,并将其存储到自定义的实体类中。这为后续的数据分析、业务逻辑处理或数据迁移提供了便利。在实际应用中,还可以根据具体...

    POI读取EXCEL教程

    HSSF提供了一个API,允许开发者用纯Java代码读取、写入和修改Excel文件。HSSF与POIFS(POI OLE 2 Property Set Facility)紧密关联,POIFS负责处理文件的存储结构,而HSSF则专注于Excel数据的逻辑表示。 HSSF API...

    ExcelUtil借助反射和POI对Excel读取,省略了以往读取Excel的繁琐步骤

    总的来说,ExcelUtil通过结合反射和Apache POI库,极大地简化了Java中Excel文件的读取工作,让开发者能够更专注于业务逻辑,而不是繁琐的文件操作。如果你在处理大量Excel数据时,希望提高效率,那么ExcelUtil是一个...

    poi excel 模板读取 复制表 复制行且区分合并行

    以上就是使用Apache POI进行Excel模板读取、复制工作表和复制行的操作,特别是处理合并单元格的详细步骤。在实际应用中,你可能还需要根据具体需求对数据进行填充、格式化等操作。如果在实践过程中遇到问题,可以...

    Java用POI API实现对Excel表的读取与写入,包含对数据库的读写,亲测有效

    1、POI_EXCEL包下分别有两个类,一个是读取excel内容,一个是想excel写入内容 2、cn.itcast包下的所有包,是为了实现从excel写入到数据库中,和从数据库写入到excel中 注意事项: 1、需要导入maven工程 2、使用...

    使用Poi读取大数据量excel的方法

    本篇文章将详细讲解如何利用Apache POI库在Android环境中高效地处理大数据量的Excel文件,无论是2003的.xls格式还是2007及以后的.xlsx格式。 首先,我们需要在项目中引入Apache POI库。如果是Maven项目,可以在pom....

    poi excel poi excel poi excel

    ### POI Excel知识点详解 #### 一、Jakarta POI简介与Apache POI的作用 Jakarta POI 是 Apache POI 的早期项目名称,它提供了一组 API 来...希望本文能够帮助您更好地理解和使用 Apache POI 进行 Excel 文件的操作。

    POI读取excel的内容.zip

    在Java编程领域,Apache POI库是一个非常重要的工具,它允许开发者处理...通过学习和理解`ReadExcelUtils.java`中的代码,开发者可以轻松地读取Excel文件的各个单元格内容,进而进行数据分析、报表生成等操作。

    poi读取excel文件

    附带的`ExcelUtil.java`源码文件,通常是一个工具类,封装了使用Apache POI读取Excel文件的关键操作,比如打开文件、遍历工作表、读取单元格数据等。这样的工具类可以简化开发过程,避免重复编写基础代码。 使用...

    poi读取excel并输出到jsp页面

    标题中的“poi读取excel并输出到jsp页面”是指使用Apache POI库来处理Microsoft Excel文件,并将数据在JavaServer Pages (JSP) 页面上显示的技术。Apache POI 是一个开源项目,它允许开发者创建、修改和显示MS ...

    poi读取Excel用到的jar包

    标题提到的“poi读取Excel用到的jar包”指的是在Java项目中使用POI库进行Excel操作所需引入的依赖文件。这些jar包在描述中给出,包括了以下几个: 1. poi-ooxml-schemas-3.8-beta5-20111217.jar:这个文件包含了...

    读取Excel的poi包

    读取Excel的poi包,,读取Excel的poi包,,读取Excel的poi包,读取Excel的poi包读

    POI读取2007 Excel文件

    标题中的“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,android5使用poi读取excel

    poi 读取EXCEL所需要的JAR

    总的来说,Apache POI是一个强大且灵活的库,能够帮助开发者在Java环境下方便地操作Excel文件,无论是简单的数据读取还是复杂的格式处理,都能游刃有余。不过要注意,处理大型Excel文件时,性能可能会成为一个问题,...

Global site tag (gtag.js) - Google Analytics