在intraweb 环境下,怎么实现iwdbgrid中是数据导入到excel啊!大哥大姐教教我 ( 积分: 50 )

  • 主题发起人 wendao20032391
  • 开始时间
W

wendao20032391

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个iwform 上放一个iwdbgrid ,和一个测试控件‘导入excel’
数据库连接是对的。
运行时,iwdbgrid可以显示表里的数据的。
但是不知道改怎么实习导入excel!
我知道在c/s 模式下,可以用控件ExcelWorkbook1,ExcelApplication1,ExcelWorksheet1
来实现对吧?
但是在intraweb环境下呢?
我试试了的。不行!
小弟,不是没有寻求过网络查找资料等等自学。
确实搞不来了
请大哥大姐们帮帮我。
这中功能,在B/S模式能实现?
 
D

dingbaosheng

Unregistered / Unconfirmed
GUEST, unregistred user!
B/S中可以用JS/VBS脚本来搞
或者 修改页面 ContentType指定文件类型
为application/ms-excel
 
P

panzichan

Unregistered / Unconfirmed
GUEST, unregistred user!
我也想知道
 
W

wendao20032391

Unregistered / Unconfirmed
GUEST, unregistred user!
to dingbaosheng,:
B/S中可以用JS/VBS脚本来搞
或者 修改页面 ContentType指定文件类型
为application/ms-excel
听起来好像可行的。但我对那脚本不懂的。
我查了相关资料的。很多大侠说:可以在服务器端生成excel文件,后在客户端调用!
请问这是怎么实现的呢?
莫非跟制作报表一样,生成HTML或PDF文件,在调用类似?
怕是行不通吧。
请指点。
可以的话,来段代码共同讨论和改进,升华!
好人好梦!
 
W

wendao20032391

Unregistered / Unconfirmed
GUEST, unregistred user!
在论坛里发现:
uses ....DB,ComObj,....
...
private
function DataSetToExcel(DS: TDataSet;
MSExcel: OleVariant;
eRange: OleVariant):Boolean;
...
implementation
function TformBookInfoEdit.DataSetToExcel(DS: TDataSet;
MyExcel: OleVariant;
eRange: OleVariant):Boolean;
var Count,I,Row: integer;
RangeName:string;
begin
with DSdo
begin
if not Active then
begin
Result:=False;
WebApplication.ShowMessage('数据库没有打开');
Result:=False;
Abort;
end;
end;

ds.first;
Result := True;
try
MyExcel:= CreateOleObject('Excel.Application');
except
WebApplication.ShowMessage('本机没有EXCEL,请安装 !');
Result:=False;
end;

MyExcel.Visible := False;
MyExcel.WorkBooks.Add;
MyExcel.ScreenUpdating := False;
Count := DS.FieldCount-1;
eRange := MyExcel.Range['A1', 'A1'];
//Excel文件的第一行
with DSdo
begin
for I := 0 to Countdo
begin
eRange.Value := Fields.DisplayLabel;
//将字段头写入excel文件的第一行
eRange := eRange.Next;
//Excel文件的下一列
end;
DisableControls;
First;
Row := 1;
while not eofdo
begin
Inc(Row);
//row:=row+1;
Excel文件的下一行
RangeName := 'A'+IntToStr(Row);
eRange := MyExcel.Range[RangeName, RangeName];
for I := 0 to Countdo
begin
eRange.Value := ''''+Fields.AsString;
eRange := eRange.Next;
end;
Next;
end;
EnableControls;
end;
MyExcel.ScreenUpdating := True;
MyExcel.Visible := True;
Result := True;
MyExcel.Quit;
end;

procedure TformBookInfoEdit.IWButton1Click(Sender: TObject);
var MyExcel,eRange:Variant;
begin
if DataSetToExcel(IWGrid.DataSource.DataSet,MyExcel, eRange) then
WebApplication.ShowMessage('保存成功');
end;

在intraweb7下调试了上述!
是可以实现的。
但为什么一生成就弹出一对话框呢:是,否,取消
我不想让他弹出,想在点击关闭时,才提示是否保存啊!
还有一个问题,但程序代码正常退出是,会发现运行窗口的存放图片的控件不见了呢!
为什么啊?
 

Similar threads

S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
992
DelphiTeacher的专栏
D
顶部