`
wenlong342
  • 浏览: 63088 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

java excel api读写excel

    博客分类:
  • java
阅读更多
Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。

提供以下功能:

从Excel 95、97、2000等格式的文件中读取数据;
读取Excel公式(可以读取Excel 97以后的公式);
生成Excel数据表(格式为Excel 97);
支持字体、数字、日期的格式化;
支持单元格的阴影操作,以及颜色操作;
修改已经存在的数据表;
能够读取图表信息
1.应用示例:
包括从Excel读取数据,生成新的Excel,以及修改Excel
package common.util;

import jxl.*;
import jxl.format.UnderlineStyle;
import jxl.write.*;
import jxl.write.Number;
import jxl.write.Boolean;

import java.io.*;

/**
* Created by IntelliJ IDEA.
* User: xl
* Date: 2005-7-17
* Time: 9:33:22
* To change this template use File | Settings | File Templates.
*/
public class ExcelHandle
{
    public ExcelHandle()
    {
    }

    /**
     * 读取Excel
     *
     * @param filePath
     */
    public static void readExcel(String filePath)
    {
        try
        {
            InputStream is = new FileInputStream(filePath);
            Workbook rwb = Workbook.getWorkbook(is);
            //Sheet st = rwb.getSheet("0")这里有两种方法获取sheet表,1为名字,而为下标,从0开始
            Sheet st = rwb.getSheet("original");
            Cell c00 = st.getCell(0,0);
            //通用的获取cell值的方式,返回字符串
            String strc00 = c00.getContents();
            //获得cell具体类型值的方式
            if(c00.getType() == CellType.LABEL)
            {
                LabelCell labelc00 = (LabelCell)c00;
                strc00 = labelc00.getString();
            }
            //输出
            System.out.println(strc00);
            //关闭
            rwb.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 输出Excel
     *
     * @param os
     */
    public static void writeExcel(OutputStream os)
    {
        try
        {
            /**
             * 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,
             * 因为类WritableWorkbook的构造函数为protected类型
             * method(1)直接从目标文件中读取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
             * method(2)如下实例所示 将WritableWorkbook直接写入到输出流

             */
            WritableWorkbook wwb = Workbook.createWorkbook(os);
            //创建Excel工作表 指定名称和位置
            WritableSheet ws = wwb.createSheet("Test Sheet 1",0);

            //**************往工作表中添加数据*****************

            //1.添加Label对象
            Label label = new Label(0,0,"this is a label test");
            ws.addCell(label);

            //添加带有字型Formatting对象
            WritableFont wf = new WritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);
            WritableCellFormat wcf = new WritableCellFormat(wf);
            Label labelcf = new Label(1,0,"this is a label test",wcf);
            ws.addCell(labelcf);

            //添加带有字体颜色的Formatting对象
            WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,
                    UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
            WritableCellFormat wcfFC = new WritableCellFormat(wfc);
            Label labelCF = new Label(1,0,"This is a Label Cell",wcfFC);
            ws.addCell(labelCF);

            //2.添加Number对象
            Number labelN = new Number(0,1,3.1415926);
            ws.addCell(labelN);

            //添加带有formatting的Number对象
            NumberFormat nf = new NumberFormat("#.##");
            WritableCellFormat wcfN = new WritableCellFormat(nf);
            Number labelNF = new jxl.write.Number(1,1,3.1415926,wcfN);
            ws.addCell(labelNF);

            //3.添加Boolean对象
            Boolean labelB = new jxl.write.Boolean(0,2,false);
            ws.addCell(labelB);

            //4.添加DateTime对象
            jxl.write.DateTime labelDT = new jxl.write.DateTime(0,3,new java.util.Date());
            ws.addCell(labelDT);

            //添加带有formatting的DateFormat对象
            DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
            WritableCellFormat wcfDF = new WritableCellFormat(df);
            DateTime labelDTF = new DateTime(1,3,new java.util.Date(),wcfDF);
            ws.addCell(labelDTF);


            //添加图片对象,jxl只支持png格式图片
            File image = new File("f:\\2.png");
            WritableImage wimage = new WritableImage(0,1,2,2,image);//0,1分别代表x,y.2,2代表宽和高占的单元格数
            ws.addImage(wimage);
            //写入工作表
            wwb.write();
            wwb.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 拷贝后,进行修改,其中file1为被copy对象,file2为修改后创建的对象
     * 尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去,
     * 以使单元格的内容以不同的形式表现
     * @param file1
     * @param file2
     */
    public static void modifyExcel(File file1,File file2)
    {
        try
        {
            Workbook rwb = Workbook.getWorkbook(file1);
            WritableWorkbook wwb = Workbook.createWorkbook(file2,rwb);//copy
            WritableSheet ws = wwb.getSheet(0);
            WritableCell wc = ws.getWritableCell(0,0);
            //判断单元格的类型,做出相应的转换
            if(wc.getType == CellType.LABEL)
            {
                Label label = (Label)wc;
                label.setString("The value has been modified");
            }
            wwb.write();
            wwb.close();
            rwb.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }


    //测试
    public static void main(String[] args)
    {
        try
        {
            //读Excel
            ExcelHandle.readExcel("f:/testRead.xls");
            //输出Excel
            File fileWrite = new File("f:/testWrite.xls");
            fileWrite.createNewFile();
            OutputStream os = new FileOutputStream(fileWrite);
            ExcelHandle.writeExcel(os);
            //修改Excel
            ExcelHandle.modifyExcel(new file(""),new File(""));
        }
        catch(Exception e)
        {
           e.printStackTrace();
        }
    }
}

2.在jsp中做相关测试,创建一个writeExcel.jsp
<%
response.reset();//清除Buffer
response.setContentType("application/vnd.ms-excel");
File fileWrite = new File("f:/testWrite.xls");
fileWrite.createNewFile();
new FileOutputStream(fileWrite);
ExcelHandle.writeExcel(new FileOutputStream(fileWrite));
%>
在IE中浏览writeExcel.jsp就可以动态生成Excel文档了,其中response.setContentType("application/vnd.ms-excel");语句必须要,才能确保不乱码,在jsp中输入<%@page contentType="application/vnd.ms-excel;charset=GBK"%>不行。


需要一个jxl.jar

原文地址:http://www.360doc.com/showWeb/0/0/41031.aspx
分享到:
评论
1 楼 duxingmiao 2008-12-26  
很好,很强大!

相关推荐

    java excel api

    Java Excel API,通常指的是jxl库,是一个广泛使用的开源Java库,用于读写Microsoft Excel文件。这个库使得在Java程序中处理Excel数据变得极其便捷,无论是读取现有的工作簿、创建新的工作簿,还是修改现有表格,jxl...

    Java Excel Api及详细教程

    Apache POI是目前最广泛使用的Java Excel API,支持读写Microsoft Office格式的文件,包括Excel。JExcelAPI则是一个轻量级的API,适用于简单的Excel操作。本教程主要基于Apache POI,因为它提供了更全面的功能。 1....

    JavaExcel API及

    使用JavaExcel API,可以轻松地读取Excel文件中的数据。例如,你可以通过Workbook类打开一个Excel文件,然后通过Sheet类访问工作表,再通过Cell类获取单元格的数据。这个过程支持多种数据类型,包括字符串、数字、...

    JAVA EXCEL API简介

    1. 读取Excel 95、97、2000等不同格式的文件。 2. 读取Excel公式的值(支持Excel 97及以后的公式)。 3. 创建新的Excel文件,格式为Excel 97。 4. 支持对字体、数字和日期的格式化设置。 5. 支持单元格的阴影和颜色...

    JAVA Excel API教程.pdf

    除了基本的数据读写外,Java Excel API还支持更高级的功能,如设置单元格样式、处理复杂的公式等。 ##### 设置单元格样式 ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel....

    基于Java Excel API的excel文件的操纵技术及其应用.pdf

    在本文中,我们将详细介绍基于Java Excel API的excel文件的操纵技术,包括excel文件的读取和写入、excel文件的编辑和格式化、excel文件的打印和导出等内容。此外,我们还将提供一些实用的示例代码,以便读者更好地...

    javaExcel Api

    - **读取Excel文件**:JavaExcel API允许开发者轻松地读取Excel工作簿(Workbook)中的数据,包括单元格(Cell)、行(Row)和工作表(Sheet)。你可以获取单元格的值、格式、公式等信息。 - **写入Excel文件**:...

    Java Excel API入门使用说明

    Java Excel API,简称 JXL,是一个开源框架,用于动态读写 Excel 文件。利用 JXL,可以在任何支持 Java 的操作系统上动态读写 Excel 文件。下面将详细介绍 JXL 的使用方法和相关知识点。 一、JXL 的主页和下载 JXL...

    java excel api 介绍

    Java Excel API的最新稳定版本是V2.0,支持多种功能,包括读取Excel 95、97、2000等格式的数据,处理公式的读取,生成Excel 97格式的文件,以及格式化字体、数字和日期,甚至进行单元格的阴影和颜色操作。...

    java excel api & 实例

    Java Excel 是一开放源码项目,通过它 Java 开发人员可以读取 Excel 文件的内容、创建新的 Excel 文件、更新已经存在的 Excel 文件。使用该 API 非 Windows 操作系统也可以通过纯 Java 应用来处理 Excel 数据表。...

    全面挖掘Java Excel API

    Java Excel API,如JExcelApi,提供了一个方便的接口来读取、写入和修改Excel文件。本文将全面挖掘Java Excel API的使用方法,帮助开发者更好地理解和应用这个库。 1. **Workbook类**: - `getNumberOfSheets()`:...

    全面挖掘Java Excel API 使用方法

    1. **读取Excel文件数据**:API能够从Excel文件中读取内容,包括读取公式(支持Excel 97之后的公式)。 2. **生成Excel文件**:API可以创建新的Excel数据表,格式遵循Excel 97标准。 3. **格式化支持**:支持字体、...

    Java Excel Api及详细教程和代码

    对于读取Excel文件,可以使用`Workbook`的静态方法`Workbook.getWorkbook(File)`。读取数据后,可以通过`Cell`对象的方法获取单元格的值。 除了基本的读写操作,JXL API还支持样式设置(如字体、颜色、边框)、公式...

    全面挖掘Java Excel API 使用方法.pdf

    Java Excel API 是一个开源项目,专门用于在Java环境中读取、创建和修改Excel文件。这个API使得非Windows操作系统上的开发者也能使用纯Java处理Excel数据。Java Excel API支持从Excel 95、97、2000等版本的文件中...

    利用Java Excel API操作Excel

    读取Excel文件是进行任何Excel操作的基础。这里以`jxl`为例介绍基本的读取过程。 ##### 1. 创建Workbook对象 读取Excel的第一步是创建一个`Workbook`对象。可以通过从本地文件或输入流中读取来实现。 ```java ...

    excel文件读取API

    本文将详细介绍如何使用Java来读取Excel文件并进行批量导入到数据库的操作。 首先,我们需要了解两个关键的Java库:Apache POI和JDBC(Java Database Connectivity)。Apache POI是Java中用于处理Microsoft Office...

    java_excel_api.rar_Excel API函数_excel api 函数_java excel a_java ex

    Java Excel API是专门为Java开发者设计的一套用于读写Microsoft Excel文件的库,它使得与Excel电子表格进行数据交互变得简单而高效。这个API通常包括多种功能,如创建新的工作簿,打开已有工作簿,修改单元格数据,...

Global site tag (gtag.js) - Google Analytics