关于在客户端生成EXCEL文件的问题 (100分)

  • 主题发起人 主题发起人 MichaelZhu
  • 开始时间 开始时间
M

MichaelZhu

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,我用Intraweb6写的一个程序需要将查询的结果生成一个EXCEL表,然后下载给用户。用什么办法可以实现?该怎么放那些控件?
 
不用Excel而生成Excel文件?——这在法律上是行不通的哟 :)
如果没有格式信息,大可以生成.CSV文档给用户。如果有格式信息,那么可以生成XML。
如果一定要生成Excel文件,而这台服务器又不能装Excel,完全可以在另一台服务器上装
Excel,然后在这台机器调用另一台机器的文档生成过程——将数据发过去,将结果文件取
回来。 :)
 
在客户端形成excel不是更简单、更好
 
To geshicheng:
在Intraweb中如何做?
 
从网上搜索一个Excel控件吧,利用它不经过MS Excel就可以产生某个版本的excel文件。我这里曾经下载过一个,但从来没有使用过,不知效果如何?我也没时间来调试。如果需要的话MailTo:xingxichen@165e.com。
 
用Excel做报表的一般思路是这样的:服务器端生成excel文件,然后客户端访问这个文件。
这种情况下,客户端的excel是必须的。至于服务器端,只要能生成Excel文件就可以了,
装Excel不是目的,是为了生成Excel文件。你有别的办法也行,比如某些第三方控件,据
说在完全脱离Excel的情况也能生成Excel文件。
如果要在客户端生成Excel文件,不借助OCX控件,恐怕困难,我是没有成功。
Intraweb的是用来做服务器端开发的,客户端开发是另外的话题。

另外,在服务器上装Excel有什么危害吗?
 
To yeskert1:
很高兴您能回答我的问题!
我的Intraweb程序在生成EXCEL文档的时候,一开始的createobject还能通过,Server connect也行,但是一到添加worksheet就异常退出,跟着提示未安装EXCEL。我觉得在NT服务器上加装OFFICE始终不太好,因为我知道用ASP就可以直接生成EXCEL,而不用在服务器上装OFFICE。
有没有办法不用在服务器上装OFFICE?难道Intraweb生成Excel文件一定要在服务器上装个Office不可吗?
 
To yeskert1:
我的思路也是这样,在服务器端生成EXCEL,然后下载给客户。可是现在在服务器上连生成都没法完成。唉,已经烦了很长时间了。
 
to MichaelZhu:
>> 因为我知道用ASP就可以直接生成EXCEL,而不用在服务器上装OFFICE。
你把asp代码写出来,我就知道intraweb该怎样做。
另外,是不是你添加worksheet方法不对?在win2000上执行正常吗?
 
To yeskert1:
以下代码是我一位同事写的,是ASP的。他的系统可以正常运行。

非常感谢您的帮忙!

dim rs,sql,filename,fs,myfile,x,link,f_time,f_date,f_file
Set fs = server.CreateObject("scripting.filesystemobject")
f_file='temp'
session("job_file")="files/"&f_file&".xls"
filename = "D:/files/"&f_file&".xls"
if fs.FileExists(filename) then
fs.DeleteFile(filename)
end if
set myfile = fs.CreateTextFile(filename,true)
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open session("job_sql"),session("objdbconnection"),1,1
if not rs.EOF then
dim strLine,responsestr
strLine=""
For each x in rs.fields
strLine= strLine & x.name & chr(9)
Next
myfile.writeline strLine
Do while Not rs.EOF
strLine=""
for each x in rs.Fields
strLine= strLine & x.value & chr(9)
next
myfile.writeline strLine
rs.MoveNext
loop
end if
rs.Close
set rs = nothing
set myfile = nothing
Set fs=Nothing
 
1、首先,你这段代码里,Excel文件是在服务器端创建的。
2、你这所谓的Excel文件不过是个文本文件,只是后缀是xls。反正excel能够识别文本文件,这样也行得通。
程序创建简单的文本文件当然不需要Excel的支持了。
3、复杂一些得报表,比如带图片的,这样就不行了。
上面的代码变成delphi代码非常容易!
 
To yeskert1:
非常感谢您的指点!其实我也一直很怀疑。
我也曾经试过别的方法,比如在服务器端放一个现成的EXCEL文件,在使用的时候连接并另存。但是也没有成功。
您能不能给个示例?
 
简单!
1、在工程目录下建立files子目录,并将book1.xls保存到里面;
2、窗口上放置IWURL1,并设置它的url为/files/book1.xls
OK!
----------
注意,1、客户端要有Excel来支持;
2、如果book1.xls在服务器端正在被打开着,那么客户端无法访问它。
 
To yeskert1:
怎么连接?怎么另存?能不能给点代码?
 
To yeskert1:
另外,能不能在Intraweb程序中写一些只在客户端执行的代码?
 
利用EXCEL的向下兼容性,可以生成EXCEL97得格式,这个格式是公开的,这样就不需要安装EXECEL。在客户端生成我没有做过,不过可以尝试用OCX控件,不知道用脚本行不行,能生成文本文件就可以生成EXCEL文件。
 
在服务器端怎样生成Excel文件的话题跟Intraweb没什么关系,像 萧星离 说的自己按照
excel的格式写,或者像你的朋友那样建立简单的文本文件,或者像我在《delphi7下
intraweb应用开发详解》上演示的那样,利用服务器上的Excel来完成。
intraweb当然能够写客户端代码了。intraweb功能非常强大!我认为你应该看一些基本的
资料,因为这些问题很基本。你可以在这些地方获得信息:
1、intraweb带的资料。你应该认真看看。
2、本论坛上关于intraweb的讨论。
3、www.51delphi上有3篇对intraweb的简单介绍
4、市场上有两个关于intraweb的书,一个是我写的《delphi7下intraweb应用开发详解》,另一个是www.51delphi.com斑竹写的《delphi web开发》(名字记得不准)。可惜这个两
个书都没有电子版。

我不认为自己态度有问题,但是三种问题不想回答:
1、回答起来要费很大力气,用很大篇幅;
2、被重复问过几次的;
3、很基本的。
 
看来最简单的方法是生成文本文件,然后再用EXCEL打开了。
谢谢各位的帮忙!
 
后退
顶部