当前位置:文档之家› JAVA 无需JXL和POI用PageOffice自动生成Excel表格

JAVA 无需JXL和POI用PageOffice自动生成Excel表格

JAVA 无需JXL和POI用PageOffice自动生成Excel表格
JAVA 无需JXL和POI用PageOffice自动生成Excel表格

JAVA 无需JXL和POI用PageOffice自动生成Excel表格很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Excel模板文件里,这对于生成复杂格式的Excel报表文件非常有用,这个功能应用PageOffice的基本动态填充功能即可实现。但若是用户想动态生成一个没有固定模版格式的Excel报表时,换句话说,没有办法事先准备一个固定格式的模板时,就需要开发人员用后台代码实现Excel报表的动态生成功能了,即通过后台代码在Excel的工作表上画出相应表格,实现Excel文件的从零到有。这里的“零”指的是Excel空白文件。

下面我就如何通过后台代码实现在空白Excel文件中画表格,这一问题的具体步骤和大家分享一下。

就以通过后台自动生成一张“出差开支预算表”为例来向大家介绍一下吧。

第一步:拷贝文件到WEB项目的“WEB-INF/lib”目录下。拷贝PageOffice

示例中下的“WEB-INF/lib”路径中的pageoffice.cab和pageoffice.jar到新建项目的“WEB-INF/lib”目录下。

第二步:修改WEB项目的配置文件。将如下代码添加到配置文件中:

poservercom.zhuozhengsoft .pageoffice.poserver.Server

poserver

/poserver.do

poserver

/pageoffice.cab

poserver

/popdf.cab

poserver

/sealsetup.exe

adminseal

com.zhuozhengsoft.pageoffice.poserver.AdminSeal

adminseal

/adminseal.do

adminseal

/loginseal.do

adminseal

/sealimage.do

mht

message/rfc822

adminseal-password

第三步:在WEB项目的WebRoot目录下添加文件夹存放word模板文件,

在此命名为“doc”,将要打开的空白Excel文件拷贝到该文件夹下,我要打开的Excel文件为“test.xls”。

第四步:在WEB项目的WebRoot目录下添加动态页面excel.jsp。在该页面

后台中

添加自定义标签库:“<%@ taglib uri="https://www.doczj.com/doc/fa18582153.html," prefix="po"%>”

引入PageOffice类库:

“<%@pageimport=”com.zhuozhengsoft.pageoffice.excelwriter.*,com.zhuozhen gsoft.pageoffice.*”%>”。

在前台HTML页面中添加PageOfficeCtrl控件:“

id="PageOfficeCtrl1">”,并设置控件所在层(

)的高和宽示。

第五步:在excel.jsp的后台页面,利用PageOfficeCtrl控件画出相应的Excel 表格,部分代码如下:

Workbook wb = new Workbook();

// 设置表格背景色

Table backGroundTable =

wb.openSheet("Sheet1").openTable("A1:P200");

// 设置表格边框颜色

backGroundTable.getBorder().setLineColor(Color.white);

// 设置标题

wb.openSheet("Sheet1").openTable("A1:H2").merge();//合并单元格

// 打开表格并设置行高

wb.openSheet("Sheet1").openTable("A1:H2").setRowHeight(30);

// 定义单元格

Cell A1 = wb.openSheet("Sheet1").openCell("A1");

// 设置单元格水平、垂直对齐方式

A1.setHorizontalAlignment(XlHAlign.xlHAlignCenter);

A1.setVerticalAlignment(XlVAlign.xlVAlignCenter);

// 设置单元格前景色

A1.setForeColor(new Color(0, 128, 128));

//给单元格赋值

A1.setValue("出差开支预算");

//设置字体:加粗、大小

wb.openSheet("Sheet1").openTable("A1:A1").getFont().setBold(true) ;

wb.openSheet("Sheet1").openTable("A1:A1").getFont().setSize(25);

// 画表头

Border C4Border =

wb.openSheet("Sheet1").openTable("C4:C4").getBorder();

// 设置表格边框的宽度、颜色

C4Border.setWeight(XlBorderWeight.xlThick);

C4Border.setLineColor(Color.yellow);

// 定义表格对象

Table titleTable = wb.openSheet("Sheet1").openTable("B4:H5");

// 设置表格的边框样式、宽度、颜色

titleTable.getBorder().setBorderType(XlBorderType.xlAllEdges);

titleTable.getBorder().setWeight(XlBorderWeight.xlThick);

titleTable.getBorder().setLineColor(new Color(0, 128, 128));

// 画表体

Table bodyTable = wb.openSheet("Sheet1").openTable("B6:H15");

bodyTable.getBorder().setLineColor(Color.gray);

bodyTable.getBorder().setWeight(XlBorderWeight.xlHairline);

Border B7Border =

wb.openSheet("Sheet1").openTable("B7:B7").getBorder();

B7Border.setLineColor(Color.white);

... ...

... ...

Table bodyTable2 = wb.openSheet("Sheet1").openTable("B6:H15");

bodyTable2.getBorder().setWeight(XlBorderWeight.xlThick);

bodyTable2.getBorder().setLineColor(new Color(0, 128, 128));

bodyTable2.getBorder().setBorderType(XlBorderType.xlAllEdges);

// 画表尾

Border H16H17Border =

wb.openSheet("Sheet1").openTable("H16:H17").getBorder();

H16H17Border.setLineColor(new Color(204, 255, 204));

Border E16G17Border =

wb.openSheet("Sheet1").openTable("E16:G17").getBorder();

E16G17Border.setLineColor(new Color(0, 128, 128));

Table footTable = wb.openSheet("Sheet1").openTable("B16:H17");

footTable.getBorder().setWeight(XlBorderWeight.xlThick);

footTable.getBorder().setLineColor(new Color(0, 128, 128));

footTable.getBorder().setBorderType(XlBorderType.xlAllEdges);

// 设置表格的行高列宽

wb.openSheet("Sheet1").openTable("A1:A1").setColumnWidth(1);

wb.openSheet("Sheet1").openTable("B1:B1").setColumnWidth(20);

... ...

... ...

wb.openSheet("Sheet1").openTable("A16:A16").setRowHeight(20);

wb.openSheet("Sheet1").openTable("A17:A17").setRowHeight(20);

// 设置表格中字体大小为10

for (int i = 0; i < 12; i++) {//excel表格行号

for (int j = 0; j < 7; j++) {//excel表格列号

wb.openSheet("Sheet1").openCellRC(4 + i, 2 +

j).getFont().setSize(10);

}

}

// 填充单元格背景颜色

for (int i = 0; i < 10; i++) {

wb.openSheet("Sheet1").openCell("H" + (6 + i)).setBackColor(new Color(255, 255, 153));

}

wb.openSheet("Sheet1").openCell("E16").setBackColor(new Color(0, 128, 128));

... ...

... ...

wb.openSheet("Sheet1").openCell("H17").setBackColor(new Color(204, 255, 204));

//填充单元格文本和公式

Cell B4 = wb.openSheet("Sheet1").openCell("B4");

B4.getFont().setBold(true);

B4.setValue("出差开支预算");

Cell H5 = wb.openSheet("Sheet1").openCell("H5");

H5.getFont().setBold(true);

H5.setValue("总计");

H5.setHorizontalAlignment(XlHAlign.xlHAlignCenter);

... ...

... ...

Cell B15 = wb.openSheet("Sheet1").openCell("B15");

B15.getFont().setBold(true);

B15.getFont().setSize(10);

B15.setValue("其他费用");

wb.openSheet("Sheet1").openCell("C6").setValue("机票单价(往)");

wb.openSheet("Sheet1").openCell("C7").setValue("机票单价(返)");

... ...

... ...

// 设置单元格中的公式:setFormula(string)

wb.openSheet("Sheet1").openCell("H15").setFormula("=D15*F15");

for (int i = 0; i < 10; i++) {

//设置单元格中数据的显示方式,数据以货币形式显示

wb.openSheet("Sheet1").openCell("D" + (6 +

i)).setNumberFormatLocal("¥#,##0.00;¥-#,##0.00");

wb.openSheet("Sheet1").openCell("H" + (6 +

i)).setNumberFormatLocal("¥#,##0.00;¥-#,##0.00");

}

Cell E16 = wb.openSheet("Sheet1").openCell("E16");

E16.getFont().setBold(true);

E16.getFont().setSize(11);

E16.setForeColor(Color.white);

E16.setValue("出差开支总费用");

E16.setVerticalAlignment(XlVAlign.xlVAlignCenter);

Cell E17 = wb.openSheet("Sheet1").openCell("E17");

E17.getFont().setBold(true);

E17.getFont().setSize(11);

E17.setForeColor(Color.white);

E17.setFormula("=IF(C4>H16,\"低于预算\",\"超出预算\")");

E17.setVerticalAlignment(XlVAlign.xlVAlignCenter);

Cell H16 = wb.openSheet("Sheet1").openCell("H16");

H16.setVerticalAlignment(XlVAlign.xlVAlignCenter);

H16.setNumberFormatLocal("¥#,##0.00;¥-#,##0.00");

H16.getFont().setName("Arial");

H16.getFont().setSize(11);

H16.getFont().setBold(true);

H16.setFormula("=SUM(H6:H15)");

Cell H17 = wb.openSheet("Sheet1").openCell("H17");

H17.setVerticalAlignment(XlVAlign.xlVAlignCenter);

H17.setNumberFormatLocal("¥#,##0.00;¥-#,##0.00");

H17.getFont().setName("Arial");

H17.getFont().setSize(11);

H17.getFont().setBold(true);

H17.setFormula("=(C4-H16)");

// 填充数据

Cell C4 = wb.openSheet("Sheet1").openCell("C4");

C4.setNumberFormatLocal("¥#,##0.00;¥-#,##0.00");

C4.setValue("2500");

Cell D6 = wb.openSheet("Sheet1").openCell("D6");

D6.setNumberFormatLocal("¥#,##0.00;¥-#,##0.00");

D6.setValue("1200");

wb.openSheet("Sheet1").openCell("F6").getFont().setSize(10);

wb.openSheet("Sheet1").openCell("F6").setValue("1");

Cell D7 = wb.openSheet("Sheet1").openCell("D7");

D7.setNumberFormatLocal("¥#,##0.00;¥-#,##0.00");

D7.setValue("875");

wb.openSheet("Sheet1").openCell("F7").setValue("1");

PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);

poCtrl1.setWriter(wb);

poCtrl1.setServerPage("poserver.do"); //此行必须

String fileName = "test.xls";

//创建自定义菜单栏

poCtrl1.addCustomToolButton("全屏切换", "SetFullScreen()", 4);

poCtrl1.setMenubar(false);//隐藏菜单栏

poCtrl1.setOfficeToolbars(false);//隐藏Office工具栏

//打开文件

poCtrl1.webOpen("doc/"+ fileName, OpenModeType.xlsNormalEdit, "");

p oCtrl1.setTagId("PageOfficeCtrl1"); //此行必须

如此,就完成Excel表格的填充了。

方案总结:

利用PageOffice组件实现后台画出Excel报表是很容易的。它既能在线对Excel 表格内容进行排版,又能在后台修改内容(可实现内容的动态填充,具体编写过程可参考卓正网站的下载中心上的示例),实现Excel报表内容的从无到有。利用PageOffice组件可以很容易的就画出自己想要的复杂、美观的Excel表格,大大的节省了程序员的开发时间,提升了开发效率,而且实现的功能更加全面,解决了开发OA系统的程序员的一大技术难题。

另外,利用PageOffice组件还能在页面上添加自定义按钮,向Excel表格中插入电子印章、手写签名等信息,并能在线保存和打印等,方便用户的使用;同时也可从数据库获取数据,动态填充Excel表格。

使用POI来处理Excel和Word文件格式

// 文件二进制输入流 private InputStream is = null; // 当前的Sheet private int currSheet; // 当前位置 private int currPosition; // Sheet数量 private int numOfSheets; // HSSFWorkbook HSSFWorkbook workbook = null; // 设置Cell之间以空格分割 private static String EXCEL_LINE_DELIMITER = " "; // 设置最大列数 private static int MAX_EXCEL_COLUMNS = 64; // 构造函数创建一个ExcelReader public ExcelReader(String inputfile) throws IOException, Exception { // 判断参数是否为空或没有意义 if (inputfile == null || inputfile.trim().equals("")) { throw new IOException("no input file specified"); } // 取得文件名的后缀名赋值给filetype this.filetype = inputfile.substring(https://www.doczj.com/doc/fa18582153.html,stIndexOf(".") + 1); // 设置开始行为0 currPosition = 0; // 设置当前位置为0 currSheet = 0; // 创建文件输入流 is = new FileInputStream(inputfile);

java导入导出excel操作

java导入导出excel操作(jxl) Java解释Excel数据(包的使用) 关键字: java excel 包 下载地址: 真实下载地址: 网站上对它的特征有如下描述: ● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体、数字、日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 应该说以上功能已经能够大致满足我们的需要。最关键的是这套API是纯Java 的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel 文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。 搭建环境 将下载后的文件解包,得到,放入classpath,安装就完成了。 基本操作 一、创建文件 拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下: Java代码 /* * Created on Dec 30, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package ; import .*; import jxl.*; import .*;

/** * @author Ken * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class CreateXLS { public static void main(String[] args) { try { WritableWorkbook book = (new File("d:/")); 0 means this is 1st page. WritableSheet sheet = ("Sheet_1", 0); value is "test". Label label = new Label(0, 0, "test"); (label); WARN:necessarily use integrated package-path, otherwise will be throws path -error. value is . number = new0, ; (number); (); (); } catch (Exception e) { (); } } } 编译执行后,会在当前位置产生一个Excel文件。 二、读取文件 以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:

poi读写Excel文件

一、Excel基础 二、HSSF概况 三、通过usermodel读取文件 四、通过usermodel写入文件 五、通过eventusermodel读取文件 六、HSSF电子表格结构 七、通过HPSF读取文档属性 八、文档摘要信息 九、附录 ━━━━━━ 正文: ━━━━━━ 在上一篇文章中,我们介绍了POI项目的基本概念,了解了如何用POI来读写OLE 2复合文档结构,并给出了两个简单的例子:用POI来读写Excel文件的Workbook流。本文继续前文的话题,阐述如何用POI来读取/写入完整的Excel文件。 约定:POI项目2.0版现在已经接近正式发行阶段,开发进度迅速,不断有新的功能集成到原有的系统,同时也有对原有系统的修改。为了保证本文的及时性,本文将按照最近的1.9开发版说明。虽然编译最近的发行版源代码也能正常运行,但现在的代码和2.0的发行版会有一些出入。 一、Excel基础 Microsoft Excel 97文件格式也被称为BIFF8,最近版本的Excel只对该格式作了少量的改动。增加对新格式的支持除了增加项目的复杂性之外,唯一的效果也许只是不得不使每个用户升级代码,没有什么实际的好处。因此,在下文说明中,凡是提到Excel 97格式的地方其实都是指Excel从97到XP的格式。 二、HSSF概况 POI项目实现的Excel 97文件格式称为HSSF——也许你已经猜到,HSSF是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”(微软使某些原本简单的事情过分复杂,同时又过分简单地处理了某些原本需要灵活性的事情,让人不胜佩服!)也

Java实现Excel数据导入和导出的研究与应用

Java实现Excel数据导入导出的研究与应用 王晶晶 北京邮电大学网络教育学院(100088) E-mail:bolalisi_double@https://www.doczj.com/doc/fa18582153.html, 摘要:Excel能够通过功能强大的工具将杂乱的数据组织成有用的信息,然后分析、交流和共享所得到的结果。很多系统由于存在着大量需要处理的数据,Excel本身强大的功能使得它成为处理分析这些数据首选的工具。随着Java语言成为越来越多系统的开发语言,利用Java进行Excel的数据导入导出在很多系统中都发挥着重要的作用,本文主要介绍了Jxl API的主要功能,并结合实例探讨了利用Jxl API操作Excel数据的导入和导出。 关键字:Java;Excel; Jxl API;数据导入导出 中图分类号:TP312文献标识码:A 1. 引言 MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式。在一个Java应用中,将一部分数据生成Excel格式,是与其他系统无缝连接的重要手段。在远程网络教学系统中,利用Excel表格统计学生的作业考试情况信息,便于老师了解学生的学习情况,分析教学效果,制定教学计划。所以,用Java操作Excel表格,导出相关的信息对于远程网络教育系统有着的很重要的意义。 在开源世界中,有两套比较有影响的API提供Excel数据导入导出的功能,一个是POI,一个是jExcelAPI。本文结合基于J2EE开发的多媒体教学系统中提供的将学生作业信息导出到Excel表格中的实例,详细阐述了利用JAVA开发的jExcelAPI操作excel的方法。 2. Jxl 简介 2.1 Java语言简介 Java语言具有面向对象、与平台无关、安全、稳定和多线程等优良特性,是目前软件设计中极为强大的编程语言[1]。它具有以下一些特点[2]:简单,面向对象,分布式,解释执行,鲁棒,安全,体系结构中立,可移植,高性能,多线程以及动态性。 2.2什么是Jxl Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该 API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、 Servlet来调用API实现对Excel数据表的访问。 Jxl发布的稳定版本是V2.0,提供以下功能: 从Excel 95、97、2000等格式的文件中读取数据[3]; 读取Excel公式(可以读取Excel 97以后的公式)[3];

java的POI操作Excel文件

java的POI操作Excel文件(2) 现在我要做的东西基本完成啦,我把这段时间使用POI的一些心得总结出来,希望能对和我遇到相同问题的朋友有所帮助,至于POI基本的使用方法,自己去看文档吧。 1、设置分页符的bug POI里的HSSFSheet类提供了setRowBreak方法可以设置Sheet的分页符。 Bug:如果你要设置分页符的Sheet是本来就有的,并且你没有在里面插入过分页符,那么调用setRowBreak时POI会抛出空指针的异常。 解决方法:在Excel里给这个sheet插入一个分页符,用POI打开后再把它删掉,然后你就可以随意插入分页符了。 如果sheet是由POI生成的则没有这个问题。我跟踪了setRowBreak的源代码,发现是Sheet.Java下的PageBreakRecord rowBreaks这个变量在搞鬼,如果Sheet里原来没有分页符,开发这个模块的那位兄台忘了为这个对象new实例,所以只能我们先手工给Excel插入一个分页符来触发POI为rowBreaks创建实例。 2、如何拷贝行 我在https://www.doczj.com/doc/fa18582153.html,的POI用户论坛翻遍了每个相关的帖子,找遍了api,也没看到一个拷贝行的方法,没办法,只能自己写: //注:this.fWorkbook是一个HSSHWorkbook,请自行在外部new public void copyRows (String pSourceSheetName, String pTargetSheetName, int pStartRow, int pEndRow, int pPosition) { HSSFRow sourceRow = null; HSSFRow targetRow = null; HSSFCell sourceCell = null; HSSFCell targetCell = null; HSSFSheet sourceSheet = null; HSSFSheet targetSheet = null; Region region = null; int cType; int i; short j; int targetRowFrom; int targetRowTo;

java读取和写入EXCEL文件

java读取和写入Excel文件 在Java中读取Excel文件的内容 在这里,我使用的是一个叫Java Excel API的东西,类似的还有jakarta的POI,不过感觉那个太复杂了点儿。而且jxl对中文的支持相当的好,至少我在用的过程中一点问题没出。 一、下载地址 [url]https://www.doczj.com/doc/fa18582153.html,/jexcelapi/[/url] 二、特性 可以读取Excel 95, 97, 2000文件 可以读或写Excel 97及其以后版本的的公式(不过我发现好像有bug) 生成Excel 97格式的电子表格 支持字体、数字和日期格式化 支持单元格的颜色和阴影 可以编辑现有的文件 三、读文件 //声明一下,记得后面要关闭哦。。 Workbook workbook = null; try { workbook = Workbook.getWorkbook(new File("d:\\temp\\TestRead.xls")); } catch (Exception e) { throw new Exception("file to import not found!"); } Sheet sheet = workbook.getSheet(0); Cell cell = null; int columnCount=3; int rowCount=sheet.getRows(); for (int i = 0; i

poi读取excel并输出到jsp页面

代码来源于网络,只做了部分修改,我也是刚用到很多都不懂,找了一些例子之类的自己用,有些不错的分享给大家,仅供参考。 下面这个是用servlet做(注意web.xml );其实原理一样;源码如下 readExcelServlet.java package com.test.servlet; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import https://www.doczj.com/doc/fa18582153.html,ermodel.HSSFCell; import https://www.doczj.com/doc/fa18582153.html,ermodel.HSSFDateUtil; import https://www.doczj.com/doc/fa18582153.html,ermodel.HSSFRow; import https://www.doczj.com/doc/fa18582153.html,ermodel.HSSFSheet; import https://www.doczj.com/doc/fa18582153.html,ermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * author:wx * describe:Reads the Excel example * */ public class readExcelServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; /** * * Constructor of the object. */ public readExcelServlet() { super(); } /** * Destruction of the servlet.
* */ public void destroy() { super.destroy(); }// Just puts "destroy" string in log // Put your code here /** * doGet */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

poi读写excel案例

Java-Excel 报表开发 POI (2009-02-19 21:44:10) 转载▼ 分类:java 标签: java 杂谈 开发环境为windowsXP-SP2,Eclipse3.2,JDK1.5.07,其实差不多都行,不会有太大的差异。本文从POI 下载开始讲解,前提是开发环境包括系统变量等等已经正确设置完毕。 1.POI的下载 截至本文发表,POI最新版本是3.0.1,距离上一个Final版本有3年了吧,以至于我差点儿就把他放弃了——以为没人管了。官方的公告讲,这一版主要是追加了一些新的特性和BUG修正,不过稍微有点儿遗憾的是,还不能很好的操作Excel2007。 POI官方网址: https://www.doczj.com/doc/fa18582153.html,/ JAR包下载: https://www.doczj.com/doc/fa18582153.html,/poi/release/bin/poi-bin-3.0.1-FINAL-20070705.zip 源码下载: https://www.doczj.com/doc/fa18582153.html,/poi/release/src/poi-src-3.0.1-FINAL-20070705.zip 下载上面的JAR和源码(源码不是必须的,但是为了早日修得正果,深入系统的看看POI代码还是有必要的)并解压待用。 2.用Eclipse搭建项目 打开Eclipse 依次点击File->New->Java Project 输入项目名称,本例中设置为POI 单击完成 在项目上点击右键->New->Folder 输入文件夹名称lib 把刚才解压的poi-3.0.1-FINAL-20070705.jar复制过来 右键点击项目,选择Properties 在左侧列表里选中Java Build Path,右侧选中Libraries 点击Add JARs,选择POI项目的lib下的所有文件 两次OK确认,回到Eclipse界面 小技巧,快捷操作:可以用鼠标左键选中poi-3.0.1-FINAL-20070705.jar但不松开,拖到任务栏的Eclipse 图标上等候1秒左右,Eclipse会自动弹起来,依然不松开移动到lib文件夹上,这个时候鼠标后面跟个十

Java读取Excel文件的几种方法

Java读取Excel文件的几种方法 最近单位有个项目需要读取excel文件的内容,特别对java读取excel文件的方法做了一点学习,也为了其他人以后能更简单地开发,少走弯路,特写此文,以下程序经过了我的测试,可以保证程序可用,如果你照搬都不行,可能是你的环境有问题。 读取excel文件的常用开源免费方法有以下几种: JDBC-ODBC Excel Driver jxl.jar jcom.jar poi.jar 下面分别对这几种方法分别进行探讨 1、JDBC-ODBC Excel Driver 这种方法是将excel看成是数据库进行操作,使用SQL Select语句即可 查询excel表格。优点是:不需要第三方的jar包。 如下表样 首先在控制面板进行数据源ODBC登记 具体方法如下:

下面就是代码了。 package xuzhe;

import java.io.*; import java.sql.*; //java xuzhe.ExcelJDBC public class ExcelJDBC { public static void main(String[] args) throws SQLException{ Connection con = null; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection( "jdbc:odbc:ExcelJDBC" ); Statement st = con.createStatement(); ResultSet rs = st.executeQuery( "Select * from [Sheet1$]" ); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount(); System.out.println ("表格列数"+numberOfColumns ); System.out.println( rsmd.getColumnName(1)+ "," + rsmd.getColumnName(2) + "," + rsmd.getColumnName(3)); while (rs.next()) { for (int i = 1; i <= numberOfColumns; i++) { if (i > 1) System.out.print(", "); String columnValue = rs.getString(i); System.out.print(columnValue); } System.out.println(""); } rs.close(); st.close(); } catch(Exception ex) { System.err.print("Exception: "); System.err.println(ex.getMessage()); } finally { con.close(); } } } 执行结果如下:

用JAVA Excel API 实现对Excel表格的读写更新

http:https://www.doczj.com/doc/fa18582153.html, package myexceltest; import jxl.*; import Java.io.*; import jxl.write.*; /** * java读取Excel表格,拷贝、更新Excel工作薄 * Description: Java开发人员可以读取Excel文件的内容,更新Excel工作薄,开发人员 * 也可以用程序生成新的Excel表格,不过我觉得在我们工作中几乎没有这方面需求,我 * 就不再列出来了,如果有哪位同事需要的话,我再把程序写出来 * * Copyright: Copyright (c) KongZhong Corparation 2005 * 程序开发环境为jb9 * @author 张丽鹏 * @version 1.0 */ public class Test1 { public static void main(String[] args) { jxl.Workbook rwb = null; try{ //构建Workbook对象, 只读Workbook对象 //直接从本地文件创建Workbook //从输入流创建Workbook InputStream is = new FileInputStream("D:/jb9Test/MyExcelTest/Book1.xls"); rwb = Workbook.getWorkbook(is); //Sheet(术语:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中 //Sheet的下标是从0开始

在Java中读写Excel文件

在Java中读写Excel文件 Jakarta的POI项目提供了一组操纵Windows文档的Java API,如下几个类提供了操作Excel文件的方便的途径:HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell,分别代表了Excel电子表格中的Book、Sheet、行和单元格。 你可以在下面地址下载到最新的POI工具包: https://www.doczj.com/doc/fa18582153.html,/poi/index.html 下面的代码创建一个Excel文件test.xls,并在第一行的第一格中写入一条消息: 1.import https://www.doczj.com/doc/fa18582153.html,ermodel.*; 2.import java.io.FileOutputStream; 3. 4.// code run against the jakarta-poi-1. 5.0-FINAL-2002050 6.jar. 5.public class PoiTest { 6. 7.static public void main(String[] args) throws Exception { 8.FileOutputStream fos = new FileOutputStream("d:\test.xls"); 9. HSSFWorkbook wb = new HSSFWorkbook(); 10. HSSFSheet s = wb.createSheet(); 11. wb.setSheetName(0, "first sheet"); 12. HSSFRow row = s.createRow(0); 13.HSSFCell cell = row.createCell(0); 14.cell.setCellValue("Hello! This message is generated from POI."); 15. wb.write(fos); 16. fos.close(); 17. } 18. 19.} 读取Excel文件时,首先生存一个POIFSFileSystem对象,由POIFSFileSystem 对象构造一个HSSFWorkbook,该HSSFWorkbook对象就代表了Excel文档。下面代码读取上面生成的Excel文件写入的消息字串: 1. POIFSFileSystem fs = null; 2. HSSFWorkbook wb = null; 3.

Java读写Excel之POI入门

Java读写Excel之POI入门 Apache POI 是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)。 如果处理.xlsx、docx、pptx的话可以试试Docx4j 。 ?HSSF -提供读写Microsoft Excel XLS格式档案的功能。 ?XSSF -提供读写Microsoft Excel OOXML XLSX格式档案的功能。 ?HWPF -提供读写Microsoft Word DOC格式档案的功能。 ?HSLF -提供读写Microsoft PowerPoint格式档案的功能。 ?HDGF -提供读Microsoft Visio格式档案的功能。 ?HPBF -提供读Microsoft Publisher格式档案的功能。 ?HSMF -提供读Microsoft Outlook格式档案的功能。 版本:poi-3.8-20120326.jar 1、生成Workbook Java代码

2、生成Workbook OOXML形式(.xlsx) Java代码 3、打开Workbook Java代码

使用POI读取excel文件内容

使用POI读取excel文件内容 package edu.sjtu.erplab.poi;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;import https://www.doczj.com/doc/fa18582153.html,ermodel.HSSFCell;import https://www.doczj.com/doc/fa18582153.html,ermodel.HSSFDateUtil;import https://www.doczj.com/doc/fa18582153.html,ermodel.HSSFRow;import https://www.doczj.com/doc/fa18582153.html,ermodel.HSSFSheet;import https://www.doczj.com/doc/fa18582153.html,ermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.POIFSFileSystem;/** * 操作Excel表格的功能类*/public class ExcelReader { private POIFSFileSystem fs; private HSSFWorkbook wb; private HSSFSheet sheet; private HSSFRow row; /** * 读取Excel表格表头的内容* @param InputStream * @return String 表头内容的数组*/ public String[] readExcelTitle(InputStream is) { try { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); } catch (IOException e)

POI操作excel大全

POI操作excel大全 第一讲:基本的Excel读写本文主要演示一下POI的基本操作,例如怎样读取和创建一个具体的Excel文件。按照惯例,拿HelloWorld说事儿。 说明:本文主要内容皆包含于官方帮助手册,之所以要拿出来,出于两个原因,手册是英文的+手册是对应 2.5.1的。 核心代码如下,注释部分为讲解。 这里只挑干的讲,完整的代码请参考(下载代码)。 //创建一个空白的WorkBook HSSFWorkbook wb = new HSSFWorkbook(); //基于上面的WorkBook创建属于此WorkBook 的Sheet, // 3.0.1版在使用全角Sheet名的时候不必再setEncdoing了,个人感觉方便了许多。H SSFSheet st = wb.createSheet(“测试页“); //创建属于上面Sheet的Row,参数0可以是0~65535之间的任何一个, //注意,尽管参数是Int类型,但是Excel最多支持65536行 HSSFRow row = st.createRow(0); //创建属于上面Row的Cell,参数0可以是0~255之间的任何一个, //同样,是因为Excel最大支持的列数为256列 HSSFCell cell = row.createCell((short)

0); //设置此单元格的格式为文本,此句可以省略,Excel会自动识别。 //其他还有几种常用的格式,请参考本文底部的补充部分。c ell.setCellType(HSSFCell.CELL_TYPE_STRING); //此处是 3.0.1版的改进之处,上一版可以直接 setCellValue(“Hello, World!“), //但是在 3.0.1里,被deprecated了。c ell.setCellValue(new HSSFRichTextString(“Hello, World!“)); //创建一个文件输出流,指定到C盘根目录下(C盘都有吧?) //xls是Excel97-2003的标准扩展名,xx是xlsx,目前的POI能直接生产的还是xls格式, //如果此处把扩展名改成xlsx,在用Excelxx打开此文件时会报错。F ileOutputStream writeFile = new FileOutputStream(“c:/helloworld.xls“); //把WorkBook写到流里 wb.write(writeFile); //记得手动关闭流,官方文档已经做了特别说明,说POI不负责关闭用户打开的流。所以. writeFile.close(); 上面就是创建一个新文档的简易代码,下面的例子是读取刚才创建的Excel并把读取到的内容显示在控制台上。 //指定要读取的文件,本例使用上面生成的helloworld.xls FileInputStream readFile = new FileInputStream(“c:/helloworld.xls“); //创建一个WorkBook,从指定的文件流中创建,即上面指定了的文件流

JXL文档说明 JAVA EXCEL API 说明手册

Java excel API说明手册 作者:Rubber 整理:calf 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel 文件并不是一件容易的事。在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是在JSP或Servlet中创建一个CSV(comma separated values)文件,并将这个文件以MIME,text/csv类型返回给浏览器,接着浏览器调用Excel并且显示CSV文件。这样只是说可以访问到Excel文件,但是还不能真正的操纵Excel文件,本文将给大家一个惊喜,向大家介绍一个开放源码项目,Java Excel API,使用它大家就可以方便地操纵Excel文件了。 JAVA EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel 文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel 数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel 数据表的访问。 现在发布的稳定版本是V2.0,提供以下功能: ?从Excel95、97、2000等格式的文件中读取数据; ?读取Excel公式(可以读取Excel97以后的公式); ?生成Excel数据表(格式为Excel97); ?支持字体、数字、日期的格式化; ?支持单元格的阴影操作,以及颜色操作; ?修改已经存在的数据表; 现在还不支持以下功能,但不久就会提供了: 1.不能够读取图表信息; 2.可以读,但是不能生成公式,任何类型公式最后的计算值都可以读出; 应用示例 1从Excel文件读取数据表 Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:(完整代码见ExcelReading.java)

POI解析excel2007和生成excel2007

最近几天在整理客户的数据,数据量比较大,有几十万条,用到了excel。用户提供的数据有很多重复的,这个我们要挑拣出来,我用代码写挑拣重复的数据,原来用jxl解析excel,发现excel不支持office2007,并且excel2003最大的行数只能是65535,这样就不能运行一次代码解决问题了。查了下资料,apache 的POI可以解析office2007。下面两个简单例子望能提供给网友参考。 1.读取excel2007 Java代码 1. //office2007工作区 2. XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream( "D:/temp/test_poi.xlsx")); 3. //获得该工作区的第一个sheet 4. XSSFSheet sheet = wb.getSheetAt(0); 5. //总共有多少行,从0开始 6. int totalRows = sheet.getLastRowNum(); 7. for (int i = 0; i <= totalRows; i++) { 8. //取得该行 9. XSSFRow row = sheet.getRow(i); 10. //注释的代码,是为了防止excel文件有空行 11.// if(row == null) { 12.// continue; 13.// } 14. System.out.println(row.getCell(1).toString()); 15. } 2.生成excel2007 Java代码 1.//输出流 2.OutputStream os = new FileOutputStream("D:/temp/create.xlsx"); 3.//工作区 4.XSSFWorkbook wb = new XSSFWorkbook(); 5.//创建第一个sheet 6.XSSFSheet sheet= wb.createSheet("test"); 7.//生成第一行 8.XSSFRow row = sheet.createRow(0); 9.//给这一行的第一列赋值 10.row.createCell(0).setCellValue("column1"); 11.//给这一行的第一列赋值 12.row.createCell(1).setCellValue("column2");

JXL操作EXCEL的常用类方法参数解析

1. JXL操作EXCEL的常用类方法参数解析 Excel的生成方式其实很简单,主要包括几个大的类 首先最重要的几个类就是WritableWorkbook,这个类代表的就是一个Excel文档,使用过Excel文档的都应该知道Excel文档的组成,都是由一个一个的sheet组成的,那么这个sheet对应的java类就是WritableSheet。实际上就是这两个大类的组成,其他的一些小的类都是为了修饰WritableSheet里的内容的。 这些修饰类中用的最多的就是WritableFont , WritableCellFormat,以及Label类,这三个类构成了修WritableSheet的核心。 <一>抽象类Workbook 该类相当于是一个工具类用于生成Excel 方法: (1)createWorkbook(File file) createWorkbook(File file,Workbook in) createWorkbook(java.io.OutputStream os) 提供了各种形式的产生Excel的方式 (2)findByName(String name) 该方法的作用是获得名称为name的Range的数组

(3)findCellByName(String name) 该方法的作用是根据name来获取对应的cell对象(4)getCell(String location) 该方法的作用是根据location来获得对应的cell对象(5)getNumberOfSheets() 该方法的作用是是获得sheet的总个数 (6)getRangeNames() 该方法的作用是获得所有Range对象名称的数组 (7)getSheet(int index) 该方法的作用是根据下标来获取对应的sheet对象 (8)getSheet(String name) 该方法的作用是根据sheet的名称来获得对应的sheet对象(9)getSheetNames() 该方法的作用是获得所有sheet的名称所在的数组(10)getSheets() 该方法的作用是获得所有sheet对象所在的数组

java操作EXCEL表格经典例子详解

Microsoft的Office系列产品拥有大量的用户,Word、Excel也成为办公文件的首选。在Java 中,已经有很多对于Word、Excel的开源的解决方案,其中比较出色的是Apache的Jakata 项目的POI子项目。该项目的官方网站是https://www.doczj.com/doc/fa18582153.html,/poi/。 POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。POI是完全的Java Excel 和Java Word解决方案。POI子项目包括:POIFS、HSSF、HDF、HPSF。表7-2对它们进行了简要介绍。 表7-2 POI子项目介绍 子项目名 说明 POIFS(POI File System) POIFS是POI项目中最早的最基础的一个模块,是Java到OLE 2 Compound Document Format 的接口,支持读写功能,所有的其他项目都依赖与该项目。 HSSF(Horrible Spreadsheet Format) HSSF是Java到Microsoft Excel 97(-2002)文件的接口,支持读写功能 HWPF(Horrible Word Processing Format) HWPF是Java到Microsoft Word 97文件的接口,支持读写功能,但目前该模块还处于刚开始开发阶段,只能实现一些简单文件的操作,在后续版本中,会提供更强大的支持 HPSF(Horrible Property Set Format) HPSF 是Java到OLE 2 Compound Document Format文件的属性设置的接口,属性设置通常用来设置文档的属性(标题,作者,最后修改日期等),还可以设置用户定义的属性。HPSF支持读写功能,当前发布版本中直支持读功能。 7.3.1 对Excel的处理类 下面通过HSSF提供的接口对Excel文件经行处理。首先需要下载POI的包,可以到apache 的官方网站下载,地址为:https://www.doczj.com/doc/fa18582153.html,/jakarta/poi/,本书采用的是 poi-2.5.1-final-20040804.jar,读者可以下载当前的稳定版本。把下载的包按照前面介绍的方式加入Build Path,然后新建一个ch7.poi包,并创建一个ExcelReader类。 ExcelReader类可以读取一个XLS文件,然后将其内容逐行提取出来,写入文本文件。其代码如下。 代码7.6 public class ExcelReader {

相关主题
文本预览
相关文档 最新文档