2010-03-17 21:35

POI官方网址:http://poi.apache.org/
POI的功能实在很强大,而且是apache的子项目,它下面又包含一些Component,比如处理Excel XLS,PowerPoint PPT,Word DOC,Outlook MSG,Excel XLSX等,下面就简单讲下poi处理excel的一些内容。

下面的jar包来源于当前最新的poi 3.6版本。

1.poi来生成excel

package com.test.poi;

import java.io.FileOutputStream;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFHyperlink;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;

public class WriteExcel {

public static void main(String[] args) throws Exception {
    // 创建Excel的工作书册 Workbook,对应到一个excel文档
    HSSFWorkbook wb = new HSSFWorkbook();

// 创建Excel的工作sheet,对应到一个excel文档的tab
    HSSFSheet sheet = wb.createSheet("sheet1");

// 设置excel每列宽度
    sheet.setColumnWidth(0, 4000);
    sheet.setColumnWidth(1, 3500);

// 创建字体样式
    HSSFFont font = wb.createFont();
    font.setFontName("Verdana");
    font.setBoldweight((short) 100);
    font.setFontHeight((short) 300);
    font.setColor(HSSFColor.BLUE.index);

// 创建单元格样式
    HSSFCellStyle style = wb.createCellStyle();
    style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    style.setFillForegroundColor(HSSFColor.LIGHT_TURQUOISE.index);
    style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

// 设置边框
    style.setBottomBorderColor(HSSFColor.RED.index);
    style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    style.setBorderTop(HSSFCellStyle.BORDER_THIN);

style.setFont(font);// 设置字体

// 创建Excel的sheet的一行
    HSSFRow row = sheet.createRow(0);
    row.setHeight((short) 500);// 设定行的高度
    // 创建一个Excel的单元格
    HSSFCell cell = row.createCell(0);

// 合并单元格(startRow,endRow,startColumn,endColumn)
    sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));

// 给Excel的单元格设置样式和赋值
    cell.setCellStyle(style);
    cell.setCellValue("hello world");

// 设置单元格内容格式
    HSSFCellStyle style1 = wb.createCellStyle();
    style1.setDataFormat(HSSFDataFormat.getBuiltinFormat("h:mm:ss"));

style1.setWrapText(true);// 自动换行

row = sheet.createRow(1);

// 设置单元格的样式格式

cell = row.createCell(0);
    cell.setCellStyle(style1);
    cell.setCellValue(new Date());

// 创建超链接
    HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
    link.setAddress("http://www.baidu.com");
    cell = row.createCell(1);
    cell.setCellValue("百度");
    cell.setHyperlink(link);// 设定单元格的链接

FileOutputStream os = new FileOutputStream("e:\\workbook.xls");
    wb.write(os);
    os.close();
}

}

2.poi读取excel
package com.test.poi;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;

import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

public class ReadExcel {

public static void main(String[] args) throws Exception {
    HSSFWorkbook wb = null;
    POIFSFileSystem fs = null;
    try {
      fs = new POIFSFileSystem(new FileInputStream("e:\\workbook.xls"));
      wb = new HSSFWorkbook(fs);
    } catch (IOException e) {
      e.printStackTrace();
    }

HSSFSheet sheet = wb.getSheetAt(0);
    HSSFRow row = sheet.getRow(0);
    HSSFCell cell = row.getCell(0);
    String msg = cell.getStringCellValue();
    System.out.println(msg);
}
public static void method2() throws Exception {

InputStream is = new FileInputStream("e:\\workbook.xls");
    HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(is));

ExcelExtractor extractor = new ExcelExtractor(wb);
    extractor.setIncludeSheetNames(false);
    extractor.setFormulasNotResults(false);
    extractor.setIncludeCellComments(true);

String text = extractor.getText();
    System.out.println(text);
}

public static void method3() throws Exception {
    HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream("e:\\workbook.xls"));
    HSSFSheet sheet = wb.getSheetAt(0);

for (Iterator<Row> iter = (Iterator<Row>) sheet.rowIterator(); iter.hasNext();) {
      Row row = iter.next();
      for (Iterator<Cell> iter2 = (Iterator<Cell>) row.cellIterator(); iter2.hasNext();) {
        Cell cell = iter2.next();
        String content = cell.getStringCellValue();// 除非是sring类型,否则这样迭代读取会有错误
        System.out.println(content);
      }
    }
}
}

注:HSSFWorkbook,XSSFWorkbook的区别:前者是解析出来excel 2007 以前版本的,后缀名为xls的,后者是解析excel 2007 版的,后缀名为xlsx。

在实际应用中,要对excel文件进行判断,该用哪个workbook来对其进行解析处理,而且,通常把这些方法都做了相应封装,使其更面向对象,上例只是main方法的简单示例而已,仅供参考!

转载于:https://www.cnblogs.com/zqmingok/archive/2010/04/16/1713480.html

Java POI Excel( pio:纯java操作excel的api )相关推荐

  1. Java poi设置打开模式_java操作Excel的poi 格式设置

    格式设置 package com.java.poi; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi. ...

  2. java poi 填充单元格_POI操作excel表格(建立工作薄、创建工作表、将数据填充到单元格中)...

    [java]代码库/* * To change this template, choose Tools | Templates * and open the template in the edito ...

  3. 解决 Java poi 3.8 等版本 操作 word 插入 图片 不成功的问题

    解决 Java poi 3.8等版本操作word插入图片不成功的问题 问题: 最近有一个需求是将Excel中的数据转换到word中,其中包括了文字和图片, 在使用 poi 3.8 向word中写入图片 ...

  4. POI中HSSF和XSSF操作Excel

    POI中HSSF和XSSF操作Excel 在公司实习快一个月了,这段时间公司业务要用JAVA操作复杂的Excel报表.刚开始的Excel还好,没有涉及到复杂的图表,所以使用JXL操作Excel,但是到 ...

  5. python如何操作excel数据_Python如何操作Excel

    以上可以根据需求的不同,选择合适的工具,现在给大家主要介绍最常用的xlrd&xlwt&xlutils系统工具的使用 1. xlrd&xlwt&xlutils介绍 xlr ...

  6. java excel 字体大小_java操作Excel的poi的字体设置

    package com.java.poi; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.us ...

  7. java 操作excel jxl_java 中JXL操作Excel实例详解

    JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一 ...

  8. java excel 设置行高 jxi_JAVA操作excel的一些例子

    JAVA操作EXCEL有两种办法,一个用POI,一个用JXI,好象听说JXI对中文的支持会稍微好些. 1 用POI,一个写的例子: import org.apache.poi.hssf.usermod ...

  9. java操作excel方法_Java实现操作excel表格的方法

    Java开发人员开发的项目需要自动读取数据,其实我们还需要用程序处理Excel数据表,接下来爱站技术频道小编就为大家讲解Java实现操作excel表格的方法吧! 一:查 (查找本地指定位置的excel ...

最新文章

  1. php jquery教程下载,jquery怎么下载和引用
  2. 在SQL和ERWIN中用自定义类型、规则和默认值实现check约束从而保证数据的完整性...
  3. linux常用命令:wget 命令
  4. 网易2022秋季校园招聘-通用技术A卷-0821
  5. 利用JMeter进行压力测试(1)(转)
  6. VMWare网络设置的3中方式
  7. 强强联手 SAP Ariba与苏宁易购共建中国企业智慧采购
  8. 基础编程题之最近公共祖先
  9. Windows VsCode配置OpenCV、Eigen
  10. 回溯算法 python
  11. 数字图像处理(21): 图像金字塔(高斯金字塔 与 拉普拉斯金字塔)
  12. DMX512协议解析
  13. 2阶魔方矩阵matlab,matlab魔方矩阵
  14. 《像混球那样思考和行动》
  15. 核心期刊为什么难发?
  16. 牛客网项目——项目开发(十):热帖排行,生成长图,上传云服务器,性能优化
  17. R语言缺失值高级处理方法
  18. github 提交消息的emoji表情符号规范
  19. js 秒转换成时分秒
  20. 关于VB提示ByRef参数类型不符的分析

热门文章

  1. [LeetCode]202. Happy Number(平衡二叉树 哈希表)
  2. 解决Android Studio由于版本问题不识别import android.support.v7.app.AppCompatActivity;
  3. java中创建两种线程的方式_java中创建线程的两种方式有什么区别?
  4. 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
  5. java使用switch编月份和舱位,纠结,代码和书上的不对解决思路
  6. iar代码优化影响运行速度吗_IAR中优化等级对Kinetis FGPIO执行速度的影响
  7. 网络品牌推广浅析网站标题该如何进行SEO优化?
  8. 如何快速增加网站收录?
  9. B2B平台推广技巧让网络营销更上一个台阶!
  10. 浅析SEO优化中标签的作用?