top
友情提示
测试消息
确定
友情提示

处理中,请稍后...

Java操作EXCEL文件
EXCEL是办公不可获取的一个常用工具,学生党不必说,平时也经常接触到EXCEL文件,虽然不会用EXCEL做复杂的各种统计,但是普通的信息汇总还是经常弄的。那么,当EXCEL文档遇到Java会如何呢?

日常开发中可能会遇到这样的需求:解析用户上传的EXCEL文件、将数据生成EXCEL文件供用户下载使用等等。所以说Java操作EXCEL文件还是有很大的现实意义的,虽然平时我们接触的网上下载的报表之类的大多数为PDF格式,但不同格式的文件的侧重点不同,应用场景也不同,各有优劣。

操作方式
常见的操作方法用三种,或者说三个工具:
(1)Apache POI ;(https://poi.apache.org/)
(2)JXL ;(http://www.quicklyjava.com/jexcel-jar-download/
  (3)  fastexcel ;(http://fastexcel.sourceforge.net/#download)
三种方式的对比网上已经有非常多的对比博文,这里不做测试。只是感慨一下Apache软件基金会的神存在,或者说整个Apache开源项目的牛X,感觉到哪都是Apache。言归正传,Apache POI不仅仅是针对EXCEL文件,而是一个针对微软文档的操作工具的大项目,提供了常见的文档如Word、Powerpoint、Visio等的支持,文档也非常齐全,打开上面的网址后可以看到详细的介绍,无论是新版还是旧版文件格式都提供了很好的支持,并且很多高级的特性如字体颜色等也有非常好的支持,官方提供的文档中有非常多的示例

后面两者则是针对EXCEL来开发的,比较轻量级,操作也很方便,fastexcel也提供了几个简单的操作实例,打开上面的网页也能看到。所以现在只是做一下JXL的简单使用测试。值得注意的是如果你不熟悉JXL,则下载JXL的时候最好连源码一起下载,一并导入IDE,否则其中一些方法的参数你在调用的时候可能无法一下子就联想到其含义,配合源码和注释使用会方便一些。


简单操作
下面以JXL为例来简单测试一下EXCEL文件的操作。且看如下示例代码:
package org.devsong;

import java.io.File;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

/**
 * JXL简单测试
 * @author 12593
 */
public class JXLTest {

    /**
     * XLS文件简单创建
     * @throws Exception
     */
    public static void createFile() throws Exception {
        String[] head = { "id", "name", "gender", "email" };
        File file = new File("src/user.xls");

        file.createNewFile();
        // 创建工作簿
        WritableWorkbook workbook = Workbook.createWorkbook(file);
        // 创建sheet
        WritableSheet sheet = workbook.createSheet("sheet1", 0);

        Label label = null;
        // 组织表头字段 id name gender email
        for (int i = 0; i < head.length; i++) {
            // 参数:列, 行, 内容
            label = new Label(i, 0, head[i]);
            sheet.addCell(label);
        }

        // 组织内容写入,存入10个user
        for (int i = 1; i <= 10; i++) {
            // 每个单元格靠行列坐标来定位
            label = new Label(0, i, i + "");
            sheet.addCell(label);

            label = new Label(1, i, "user_" + i);
            sheet.addCell(label);

            label = new Label(2, i, "MALE");
            sheet.addCell(label);

            label = new Label(3, i, "xxxx@xx.com");
            sheet.addCell(label);
        }

        workbook.write();
        workbook.close();
    }

    /**
     * XLS文件简单读取
     * @throws Exception
     */
    public static void readFile() throws Exception {
        // 获取文件对象
        File file = new File("src/user.xls");
        Workbook workbook = Workbook.getWorkbook(file);

        // 获取sheet
        Sheet sheet = workbook.getSheet(0);
        for (int i = 0; i < sheet.getRows(); i++) {
            for (int j = 0; j < sheet.getColumns(); j++) {
                // 获取指定坐标的单元格
                Cell cell = sheet.getCell(j, i);
                System.out.print("      " + cell.getContents());
            }
            System.out.println();
        }
        workbook.close();
    }

    public static void main(String[] args) {
        try {
            createFile();
            readFile();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上面只是做了简单的文件创建和读取测试,很多高级的特性如行高、列宽等并未涉及,并且工具本身提供了很多重载方法,可以根据需求使用。


结果
文档生成效果
文档生成效果图

文档读取输出效果
      id      name      gender      email
      1      user_1      MALE      xxxx@xx.com
      2      user_2      MALE      xxxx@xx.com
      3      user_3      MALE      xxxx@xx.com
      4      user_4      MALE      xxxx@xx.com
      5      user_5      MALE      xxxx@xx.com
      6      user_6      MALE      xxxx@xx.com
      7      user_7      MALE      xxxx@xx.com
      8      user_8      MALE      xxxx@xx.com
      9      user_9      MALE      xxxx@xx.com
      10      user_10      MALE      xxxx@xx.com

标签
EXCEL
ApachePIO
JXL
fastexcel
文档操作
上一篇:良心的小工具--超级计算器
下一篇:AndroidStudio error Entry fileTemplates Singleton.java.ft not found in...
文章阅读完了, 快到评论区留下你的看法吧!
Email:
验证码:
昵 称 :
评论列表
热门标签
今日倒计时
小时 分钟
年少不识曲中意,再听已是曲中人
加油吧骚年
文章分类
最新文章
浏览排行

关于友情链接

友情链接申请请到留言板块留言。注明网站名称及网址。期待您的友链,欢迎留言。
最新留言
[2018/04/07]太难找了,找到了
[2018/03/21]Entry fileTemplates//Singleton.java.ft not found in C:/Dev/android-studio/lib/resources_en.jar 该错误对我们使用AS没有影响吗?为什么复制保存后重新创建一个新的之后这个错误又出现了?
[2018/01/23]815cce30b85eb6b7ee7930c09135fcf7好漂亮的博客空间啊
[2018/01/06]好漂亮的博客.......
[2017/12/26]试试水
[2017/12/21] 博主可以分享一下这个源码不, 很喜欢这个博客
[2017/11/20]你加我友链了????
[2017/11/20]你的alert 很不友好哈
[2017/11/20]友链已添加
[2017/11/19]路过帮踩。
Copyright © 2018 DevSONG . All rights reserved. 有疑问或者建议? 留言给我或者E-mail me
滇ICP备17002307号-3