Topic: 请教(jExcelAPI)

  Print this page

1.请教(jExcelAPI) Copy to clipboard
Posted by: zero0
Posted on: 2004-10-21 14:52

{同一个话题尽量在同一个帖子里讨论,另一个帖子将在下周六删除,已经删除}
请问在windows环境下用jExcelAPI做的程序是否可以移植到linux下
需要什么改动吗
谢谢

2.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: kavinwang
Posted on: 2004-10-21 18:52

没有过jExcelAPI,据说POI可以移植,不过java的工具代码如果没有特殊说明,一般都是可以移植的,你可试试

3.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: zero0
Posted on: 2004-10-22 11:04

谢谢
我查过,jExcelAPI也是用java写的,不存在平台问题
所以这次用jExcelAPI做的程序
但我是在windows环境下做的程序(条件限制),测试没有任何问题
移植到linux下却执行不了
我不知道是什么原因
请问移植到linux下有什么需要注意的问题吗
非常感谢

4.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: kavinwang
Posted on: 2004-10-22 13:05

纯Java的应该没有什么问题,
你能把你的错误信息post上来吗?也好让大家研究一下。

5.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: zero0
Posted on: 2004-10-25 11:49

谢谢大家
{请活用您的编辑功能,教大的错误信息请用TXT文件上传,以便减少对文章易读性的影响}
源代码简单如下:
try 
{

//构建Workbook对象, 只读Workbook对象
//Method 1:创建可写入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(filename));
//Method 2:将WritableWorkbook直接写入到输出流
/*
OutputStream os = new FileOutputStream(targetfile);
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
*/
//创建Excel工作表
jxl.write.WritableSheet ws = wwb.createSheet("指标数据统计", 0);
//
jxl.write.Label labelC0 = new jxl.write.Label(0, 0, "序号");
jxl.write.Label labelC1 = new jxl.write.Label(1, 0, "日期");
jxl.write.Label labelC2 = new jxl.write.Label(2, 0, "会议次数");
jxl.write.Label labelC3 = new jxl.write.Label(3, 0, "最大会议时长");
jxl.write.Label labelC4 = new jxl.write.Label(4, 0, "集群注册人数");

ws.addCell(labelC0);
ws.addCell(labelC1);
ws.addCell(labelC2);
ws.addCell(labelC3);
ws.addCell(labelC4);

rs = cst.executeQuery();
while (rs.next())
{
temp_row ++;
int hy_ct = rs.getInt("hy_ct");
int MAXSC = rs.getInt("MAXSC");
int JQC = rs.getInt("JQC");
String dt = rs.getString("dt").trim();
int maxsc_h = MAXSC / 3600;
int maxsc_m = (MAXSC % 3600)/60;
int maxsc_s = MAXSC % 60;
String s_maxsc = Integer.toString(maxsc_h)+":"+Integer.toString(maxsc_m)+":"+Integer.toString(maxsc_s);

jxl.write.Number labelN0 = new jxl.write.Number(0, temp_row, temp_row);
jxl.write.Label labelN1 = new jxl.write.Label(1, temp_row, dt);
jxl.write.Number labelN2 = new jxl.write.Number(2, temp_row, hy_ct);
jxl.write.Label labelN3 = new jxl.write.Label(3, temp_row, s_maxsc);
jxl.write.Number labelN4 = new jxl.write.Number(4, temp_row, JQC);

ws.addCell(labelN0);
ws.addCell(labelN1);
ws.addCell(labelN2);
ws.addCell(labelN3);
ws.addCell(labelN4);

}
//写入Excel对象
wwb.write();
//关闭可写入的Excel对象
wwb.close();
}
catch (Exception e)
{
e.printStackTrace();
}

在windows环境下运行正常

但移植到linux下后会出现如下错误:

error.txt (8.57k)

6.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: zero0
Posted on: 2004-10-25 11:51

另外对于重复发贴请版主原谅
非常抱歉
{OK,以后请多注意,拜托了,谢谢}

7.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: littledeer1974
Posted on: 2004-10-26 08:12


Jakarta POI - Java API To Access Microsoft Format Files

The POI project consists of APIs for manipulating various file formats based upon Microsoft's OLE 2 Compound Document format using pure Java. In short, you can read and write MS Excel files using Java. Soon, you'll be able to read and write Word files using Java. POI is your Java Excel solution as well as your Java Word solution. However, we have a complete API for porting other OLE 2 Compound Document formats and welcome others to participate.

OLE 2 Compound Document Format based files include most Microsoft Office files such as XLS and DOC as well as MFC serialization API based file formats.

As a general policy we try to collaborate as much as possible with other projects to provide this functionality. Examples include: Cocoon for which there are serializers for HSSF; Open Office.org with whom we collaborate in documenting the XLS format; and Lucene for which we'll soon have file format interpretors. When practical, we donate components directly to those projects for POI-enabling them.


JExcel API

Java Excel API is a mature, open source java API enabling developers to read, write, and modifiy Excel spreadsheets dynamically. Now java developers can read Excel spreadsheets, modify them with a convenient and simple API, and write the changes to any output stream (e.g. disk, HTTP, database, or any socket).
Any operating system which can run a Java virtual machine (i.e., not just Windows) can both process and deliver Excel spreadsheets. Because it is Java, the API can be invoked from within a servlet, thus giving access to Excel spreadsheets over internet and intranet web applications.


首先,不要混同两个projectSmile

您使用的是哪里个呢(我猜是下面的确JExcel API)
#我没有用过JExcel API,可能给我给不了你什么有价值的建议,但是看到错误信息,我猜想是不是你的Tomcat方面的问题呢,你在查查看

8.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: archonLing
Posted on: 2004-10-26 09:02

My group is using JExcel API under JRun instance and we did not encounter any issues. Have you checked your file access permission in your linux environment? If that is not the issue, maybe throwing a few lines println() will help find the trouble spot.

9.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: zero0
Posted on: 2004-10-26 09:17

谢谢
我是用的是JExcel API,之前说过了,可能是没有说清楚吧,不好意思
之前查过一些文档,用JExcel API应该是没问题的
我估计也是tomcat的问题,但不知道怎么解决
所以希望得到大家的帮助
非常感谢

10.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: zero0
Posted on: 2004-10-26 09:23

thanks
my environment :linux+j2sdk-1_4_0+jakarta-tomcat-4.1.24+Sybase
I wil try it
thanks a lot

11.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: Benny139
Posted on: 2004-10-26 23:37

我沒有注意看你的error msg
但我有用過 jExcel
是ok的
environment 也是 linux+j2sdk-1_4_0+jakarta-tomcat+Sybase
但 tomcat = 4.1.18
你再試一下

12.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: zero0
Posted on: 2004-10-27 11:45

好的
我再试一下吧
多谢

13.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: kavinwang
Posted on: 2004-10-27 12:42

会不会是你的temp_row ++;造成java.lang.ArrayIndexOutOfBoundsException,你查查看!

14.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: littledeer1974
Posted on: 2004-11-01 16:52

copy from hohaischooldays
(删除了另外一个相同内容的贴子,hohaischooldays朋友的贴自内容,我给拷贝过来了,谢谢他)

(转载)
java Excel API 简介(翻译)
一. 简介
java Excel API 是允许java开发者读取生成Excel电子表格的开源java API,另外,它包括一个允许java应用读取Excel,修改一些单元格,写入一个新的电子表格的机制。
这组API 允许一个处理和递交Excel电子表格的纯java应用,在非windows操作系统下运行。因为基于java,这个api可以在一个servlet中被 调用;所以通过它在internet和企业内网的web应用可以访问Excel的功能;
二. 特点:

1) 读取Excel95,97,2000的数据;
2) 读取和写入Excel97及以后版本的公式;
3) 生成Excel2000格式的电子表格;
4) 支持对字体,数字,日期的格式化;
5) 支持对单元格加阴影和加色彩;
6) 修改存在的工作表;
7) 支持图片的创建;
8) 日志记录可以定制;

三. 局限性:
JExcelApi不能够生成和读取图表的信息;
这个信息当图表被拷贝的时候仍然保存;
当增加一个图片到表中,仅仅PNG格式被支持。(这部分我不懂)
四. 开始使用:
这部分将用大量的演示程序来实例讲解关于这个api的使用;
1) 读取工作表:当读取工作表的时候,演示程序被用作在一种合理的方式下,按照原格式把Excel文件转化为CSV和XML格式; java -jar jxl.jar -csv myspreadsheet.xls 要查看把表格转化为xml,调用下面的演示程序: java -jar jxl.jar -xml myspreadsheet.xls 为了分别介绍xlrd/csv.java和xlrd/xml.java,需要进行更多的工作;这个类的使用仅仅是个开始;从http://www.andykhan.com/jexcelapi/tutorial.html#reading 可以获得一个指南。
2) 生成工作表这个写入演示阐明了JExcelApi在生成工作表的中最容易理解的功能;工作表经过这个演示程序用不同的字体、数字格式、日期格式、改色、对边框的处理; 生成演示工作表, JExcelApi调用方法如下: java -jar jxl.jar -write myspreadsheet.xls 这将在当前目录生成一个叫 myspreadsheet.xls 的示例工作表;被用来生成工作表的类通常是jxl/Write.java。这也许会被用于一个显示过程的开始;
3) 复制电子数据表 JexcelApi也可以被用于复制和修改工作表;包括JExcelApi的叫做jxlrwtest.xls电子数据表,是一个健壮的演示程序;如果通过命令行来运行这个电子数据表,那么一个该电子数据表的拷贝将被生成,第二个工作表包括修改后的值。不要修改演示的电子数据表,否则修改演示程序将不能运行。 从包含jxlrwtest.xls的目录运行该演示程序; java -jar jxl.jar -rw jxlrwtest.xls myoutput.xls 演示程序将生成一个叫做myoutput.xls的电子数据表,第一个工作表(叫做“初始的”)是没有改变的,但是第二各工作表(叫做“修改的”)内的被标题指定的单元格内容改变了。 有修改功能的类是jxl/ReadWrite.java。
五. 运行环境
JExcelApi需要java2才可以运行。
当处理大的电子数据表的时候,通常使用复制的函数功能是被推荐的,用户分配足够的内存让java命令运行java虚拟机使用-Xms和-Xmx 选项。
六. 安装
JExcelApi被打包压缩成一个tar文件,就像jexcelapi_2_0.tar.gz;在UNIX系统中,用如下命令进行解压缩。 gunzip jexcelapi_2_0.tar.gz 接下来 tar xf jexcelapi_2_0.tar 在linux系统下用一条命令就可以解压缩 tar zxf jexcelapi_2_0.tar.gz 在windows系统中,通常要用类似Winzip的软件进行解压缩。无论通过何种方式解压缩,这个应用都会被放到叫做jexcelapi的子目录下,最顶级的目录包括,html网页和准备编译的jar包, jxl.jar.docs目录下 包括公共类的文档资料,build目录下包括部署文件(需要ant),src目录包括java类的源码。
七. Excel版本
JExcelApi可以读取Excel95、97、2000创建的Excel文件,可以生成能够被Excel97以后版本读取的工作表。
八. 许可
JExcelApi被允许在the GNU Lesser General Public License之内发行,详细情况请查看 http://www.gnu.org/copyleft/lesser.html
九. 详细笔记
一个指南(http://www.andykhan.com/jexcelapi/tutorial.html)利于那些希望掌握这组API如何读取、写入、拷贝电子数据表的人。当输入电子数据表的时候JExcelApi在拷贝过程中对图表的支持是有限的,只有它们(指前文的图表)不能通过API进行读取和输出。
更为详细的技术信息,包括如何处理日期和unicode字符,请看http: //www.andykhan.com/jexcelapi/technotes.htm的技术文档。
JExcelApi的下载地址:
http://www.andykhan.com/jexcelapi/download.html
更改历史记录:
http://www.andykhan.com/jexcelapi/changehistory.html

版权声明:CSDN是本Blog托管服务提供商。如本文牵涉版权问题,CSDN不承担相关责任,请版权拥有者直接与文章作者联系解决。

发表于 2004年09月23日 8:31 AM

15.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: kavinwang
Posted on: 2004-11-01 20:59

你有一个叫做statisticr2.jsp的文件吗?如果有,你查查其中的代码。

16.Re:请教(jExcelAPI) [Re: zero0] Copy to clipboard
Posted by: zero0
Posted on: 2004-11-04 10:55

多谢大家
问题已经找到了并已经解决
实在是不好意思,我在命名文件时用到了java.util.Date().toLocaleString() 方法(Deprecated)
在windows环境下可以编译通过(虽然会有提示),并运行正确
但移植到linux环境下就会有上述问题
非常感谢大家的回复,很多看了以后受益匪浅
另外由于初来本论坛,所以给版主带来了很多不便,望版主见谅,同时感谢版主的辛勤工作


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923