`
huibin
  • 浏览: 741327 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

利用Java导入并操作 Microsoft Excel 文档

    博客分类:
  • JAVA
阅读更多

 JExcel 是一个API, 支持从Java应用程序中操作Excel工作表、工作薄等。JExcel API 是自2003年以来出现的一个稳定的开放源代码产品。

  JExcel 是一个API, 支持从Java应用程序中操作Excel工作表、工作薄等。JExcel API 是自2003年以来出现的一个稳定的开放源代码产品。API 简单易操作而且功能强大。除了基本功能如读取,输入,修改Excel 表之外,它还提供了更为复杂的功能如读取和输入公式,支持字体、数字、日期的格式化,支持单元格的阴影,嵌入以及颜色的操作,复制图表,支持插入和复制图像到Excel表格中。

  JExcelApi 主页:http://jexcelapi.sourceforge.net/.

  JExcelApi JAR, jxl.jar下载:http://www.java2s.com/Code/JarDownload/jxl.jar.zip.

  如何应用 API

  不用大费周章的,在这里我举出两个简单的例子。 第一个例子会展示如何1)导入一个Excel表2)读取并操作它的数据。第二个例子会展示如何导出电子表格到客户端。

  示例1:导入和操作Excel 表

  为了简化文件访问操作,我决定在我所举的例子中使用的Struts。

  以下表格将被导入例子中,修改,然后返回客户端。

  利用Java导入并操作 Microsoft Excel 文档

  1. 建立文件上传表

  第一步是建立一个JSP, 能允许客户端选择表格上传到服务器(见列表1)。

  列表 1: Excel 文件上传表格

  

    < %@ taglib uri="/WEB-INF/tlds/struts-html.tld"

  prefix="html"%>

  < html>

  < head>

  < title>Struts File Upload< /title>

  < html:base />

  < /head>

  < html:form action="/uploadExcel" method="post"

  enctype="multipart/form-data">

  < table>

  < tr>

  < td align="left" colspan="3">< font color="red">

  < html:errors />< /font>

  < /td>

  < /tr>

  < tr>

  < td align="right">Select Microsoft Excel File : < /td>

  < td>

  < html:file property="excelFile"/>

  < /td>

  < td>

  < html:submit>Upload File< /html:submit>

  < /td>

  < /tr>

  < /table>

  < /html:form>

  < /body>

  < /html>

   

Struts < html:file> 标签允许你编辑数据org.apache.struts.upload.FormFile(见第二步)

  表格内容类型"multipart/form-data" 是用来提交包括非ASCII数据和二进制数据的文件。

  2. 创建Struts Action 表(Struts Action Form)

  第二步是创建一个可以容纳上传文件的Action Form(见列表2)

  列表 2: Struts上传表格功能表

  

      package test.excel.form;

  import org.apache.struts.action.*;

  import org.apache.struts.upload.FormFile;

  public class StrutsUploadForm extends ActionForm {

  private FormFile excelFile;

  public FormFile getExcelFile() {

  return excelFile;

  }

  public void setExcelFile(FormFile excelFile) {

  this.excelFile = excelFile;

  }

  }

  3. Struts Action 代码(Struts Action Code)

 

  Struts action 会有一个代码从StrutsUploadForm 功能表中得到文件,检查content type并且通过文件的输入流到达Workbook class。Workbook是代表了一个工作薄的JExcelApi class。这个种类包括各种各样的工厂方法(factory methods并且提供了多种可以提供工作表入径的accessors(见列表3)。

  列表 3: Excerpt from ExcelUploadAction.java struts action class 从ExcelUploadAction.java struts action class摘录

  

      ...

  StrutsUploadForm uploadForm = (StrutsUploadForm)form;;

  FormFile myFile = uploadForm.getExcelFile();

  Workbook workbook =

  Workbook.getWorkbook(myFile.getInputStream());

  ...

  现在你可以把工作表加进Workbook class,你就可以开始遍历其行。以下的代码将会从工作簿中得到第一个工作表,还有很多行和列并且重复每一行,显示每格的内容。(见列表4)

Listing 4: 从ExcelUploadAction.java struts action class摘录

  

      ...

  Sheet sheet = workbook.getSheet(0);

  int numberOfRows = sheet.getRows();

  int numberOfColumns = sheet.getColumns();

  for (int row = 0; row < numberOfRows; row ++ ) {

  for (int column = 0; column < numberOfColumns; column ++ ) {

  Cell cell = sheet.getCell(column,row);

  System.out.print(cell.getContents() + " | ");

  }

  System.out.println();

  }

  ...

  在以下的代码片段中,你会在列名“Age”下获取所有价值并且计算平均年龄(见列表5)。

 

  列表 5: 在Java 中计算平均年龄

  

      ...

  LabelCell labelCell = sheet.findLabelCell("Age");

  int ageColumnNumber = labelCell.getColumn();

  double ageSum = 0;

  for (int row = 1; row < numberOfRows; row ++ ) {

  Cell cell = sheet.getCell(ageColumnNumber,row);

  if (CellType.NUMBER.equals(cell.getType())){

  ageSum = ageSum + Integer.parseInt(cell.getContents());

  }

  }

  double averageAge = ageSum / (numberOfRows - 1);

  System.out.println("Sum Age : " + ageSum);

  System.out.println("Average Age : " + averageAge);

  ...

  示例2: 从Servlet输出一个Excel文件

 

  在这个例子中,你会创建一个Excel 表并且把它交回到浏览器。

  在以下的例子中你将会看到,用JExcelApi创建一个Excel表是一件非常简单的流程。在你用的doPost()方法中,设置HTTP Response content type到"ms-excel" 并且设置Content-Disposition 到"attachment",然后提供附件名称(见列表6)。

  列表 6: 从Servlet输出一个Excel文件

  

      ...

  response.setContentType("application/vnd.ms-excel");

  response.setHeader("Content-Disposition",

  "attachment; filename=sampleName.xls");

  WritableWorkbook writableWorkbook =

  Workbook.createWorkbook(response.getOutputStream());

  WritableSheet writableSheet =

  writableWorkbook.createSheet("Demo", 0);

  writableSheet.addCell(new Label(0, 0, "Hello World"));

  writableWorkbook.write();

  writableWorkbook.close();

  ...

  这个示例展示出创建一个电子表"sampleName.xls"其中包括一个工作表,这个工作表中又包括了在A1格中有"Hello World"文本。

 

分享到:
评论

相关推荐

    poiEXcel导入导出操作架包

    Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目,可以与JXL 混合使用,方便数据导入导出操作.

    POI 封装操作Excel(导入、导出)

    POI 提供API给Java程序对Microsoft Office格式档案读和写的功能,尤其是在操作Excel文档上面。本例采用javabean + 注解的方式,对POI进行了封装,旨在针对不同的Excel文档用同样的方法处理,已到达代码的重复利用。...

    C#使用NOPI库实现导入Excel文档

    NPOI中N指代的是.Net,POI是一个完全开源的Java写成的库,能够在没有安装微软Office或者相应环境的情况下读写Excel、Word等微软OLE2组件文档,几乎支持所有的Office97~Office2007的文件格式。所以NPOI就是POI项目的...

    aspose.cells 8.6

    java,aspose,excel导出Aspose.Cells是一款功能强大的Excel文档处理和转换控件,开发人员和客户电脑无需安装Microsoft Excel也能在应用程序中实现类似Excel的强大数据管理功能,支持所有Excel格式类型的操作,在...

    Anroid开发所需poi_jar包

    开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel Apache POI 简介是用Java编写的免费开源的跨平台的 Java API,Apache POI...

    ASP EXCEL导入SQL

     361CRM平台的配置功能的强大,并不以损失平台应用的易用性为基础,361CRM平台在操作上采用引导式操作,以及提供方便易用的在线帮助,大大地降低了系统使用的复杂度,使系统更加地人性化、简易化。  实时即时  ...

    npoi:在ASP.NET Core 2.0 Razor页面中导入和导出Excel

    在ASP.NET Core 2.0 Razor页面中导入和导出Excel NPOI是一个免费工具,支持xls,xlsx和docx扩展。 该项目是上POI Java项目的.NET版本。 POI是一个开源项目,可以帮助您读取/写入XLS,DOC,PPT文件。 它涵盖了Excel...

    poi 3.8 beta3-20110606最新版本

    Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。 结构: HSSF - 提供读写Microsoft Excel XLS格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML XLSX格式...

    java导出excel表格源码下载-importer-exporter:3D城市数据库客户端,用于3D城市模型数据的高性能导入和导出

    java导出excel表格源码下载3D 城市数据库导入器/导出器 3D 城市数据库导入器/导出器是一个基于 Java 的客户端,用于 . 它允许高性能加载和提取 3D 城市模型数据。 支持 CityGML 2.0 和 1.0 支持 CityJSON 1.0 通过...

    POI导入测试用数据users.xls

    Apache POI项目的任务是创建和维护Java API,以便根据Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)操作各种文件格式。简而言之,您可以使用Java读写MS Excel文件。此外,您还可以使用Java...

    NPOI2.2.zip

    POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。  NPOI之所以强大,并不是因为它支持导出Excel,而是因为它支持导入Excel,并能"理解"OLE2文档结构,这也是其他一些Excel读写库比较弱的方面。通常...

    poiji:一个微型库,基于Apache POI将excel行转换为Java对象列表

    Poiji在后台使用 (Microsoft文档的Java API)来完成映射过程。 目录 入门 在您的Maven / Gradle项目中,首先添加相应的依赖项: 专家 &lt; groupId&gt;com.github.ozlerhakan&lt;/ groupId&gt; &lt; artifactId&gt;poiji ...

    SOAOFFICE - 微软 OFFICE 中间件

    SOAOffice 完全抛弃了传统利用Office服务器端自动化技术存取文档数据的种种弊端和缺陷,采用独创的专利技术构建了一个功能强大、简单易用的微软Office中间件平台,平台提供标准的.net和java组件接口,不但能够在线...

    Apache POI库jar文件

    Apache POI库是一个开源的Java库,可以帮助开发人员处理Microsoft Office格式的文档,例如Word文档、Excel电子表格和PowerPoint演示文稿等。以下是Apache POI库的详细介绍: 支持多种Office格式:Apache POI库支持...

    久其表格OCX控件(共享版)

    6. 提供Excel的导入导出操作,能够与Excel完美结合; 7. 打印功能强大,能够支持各种特殊的打印需求,可以定制打印模版; 8. 提供打印预览功能,并允许用户在线调整打印效果; 9. 录入方式灵活,...

    网管教程 从入门到精通软件篇.txt

    Perfect文档、Microsoft:Word文档;DisplayWrite文档 DOT:Microsoft Word文档模板 DPL:Borland Delph 3压缩库 DRV:驱动程序 DRW:Micrografx Designer/Draw;Pro/E绘画文件 DSF:Micrografx Designer VFX...

    asp.net知识库

    Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与XML转换的详细...

    Python核心编程第二版(ok)

     1.6 Python文档   1.7 比较Python(Python与其他语言的比较)   1.8 其他实现   1.9 练习   第2章 快速入门   2.1 程序输出,1print语句及“HellocWorld!”   2.2 程序输入和raw_input()内建...

    Python核心编程第二版

     1.6 Python文档   1.7 比较Python(Python与其他语言的比较)   1.8 其他实现   1.9 练习   第2章 快速入门   2.1 程序输出,print语句及“Hello World!”   2.2 程序输入和raw_input()内建...

Global site tag (gtag.js) - Google Analytics