在WebBrowser中调用excel时,如何实现打印预览? 在WebBrowser中调用excel时,可以实现打印但打印预览时出错怎么办?我要在自己的窗口中运行excelOleContainer不好用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我没用控件的procedure Tbroview.Button2Click(Sender: TObject);beginbroview.PUBWriteExcel(DBGrid1, datetostr(date),screen.ActiveCustomForm.Caption);end;procedure Tbroview.PUBWriteExcel(FDBGrid1: TDBGrid; sName,Title1: string);var ExcelID: Variant; k, i, j: integer; filename: string;begin if FDBGrid1.DataSource.DataSet.IsEmpty then begin beep; showmessage('没有可导出的数据!'); exit; end; filename:= concat(extractfilepath(application.exename), sName, '.xls'); try ExcelID:= CreateOleObject('Excel.Application' ); //创建 Excel 对象 ExcelID.Caption :='图书室信息管理系统'+'--调用 Microsoft Excel 打开导出文件'; //更改 Excel 标题栏 except Application.Messagebox(pchar('Excel 没有安装!'),pchar(trim('system_name')), MB_ICONERROR + mb_Ok); Abort; end; try PubCreate_ProgressForm(self,'正在导出数据,请稍候...');//显示进度框 Progress_Form1.Show; ProgressBar1.Max := FDBGrid1.DataSource.DataSet.RecordCount; ExcelID.Workbooks.Add; FDBGrid1.DataSource.DataSet.DisableControls; //禁止dbgrid记录移动 FDBGrid1.DataSource.DataSet.First; for j := 0 to FDBGrid1.Columns.Count - 1 do //插入字段名 begin ExcelID.Worksheets[1].Cells[3, j + 1] := FDBGrid1.Columns[j].Title.Caption; ExcelID.Worksheets[1].Cells.item[3, j + 1].font.size := '10'; end; k:=2; for i := 4 to FDBGrid1.DataSource.DataSet.RecordCount + 3 do //插入记录(记录循环) begin ProgressBar1.Position := k; for j := 0 to FDBGrid1.FieldCount - 1 do //DBGrid列循环 begin ExcelID.Worksheets[1].Cells.item[i, j + 1] := FDBGrid1.Fields[j].Asstring; ExcelID.Worksheets[1].Cells.item[i, j + 1].font.size := '10'; end; FDBGrid1.DataSource.DataSet.Next; k:=k+1; end; ExcelID.Worksheets[1].Columns.AutoFit; //宽度自适应 ExcelID.Worksheets[1].Cells.item[1, 2] := Title1; //标题内容 ExcelID.Worksheets[1].Cells.Item[1, 2].font.size := '14'; //标题大小 finally FDBGrid1.DataSource.DataSet.EnableControls; ExcelID.Visible := true; //显示EXCEL窗口 ProgressBar1.Position :=0; Progress_Form1.Close; end;end;//{创建进度显示窗口}procedure Tbroview.PubCreate_ProgressForm(AOwner: TComponent;Labeltext:string);var Panel: TPanel; Prompt: TLabel; {提示的标签}begin if assigned(Progress_Form1) then exit; Progress_Form1 := TForm.Create(AOwner); with Progress_Form1 do begin try Font.Name := '宋体'; {设置字体} Font.Size := 9; BorderStyle := bsNone; Width := 300; Height := 100; BorderWidth := 2; Color := clBlue; Position := poScreenCenter; Panel := TPanel.Create(Progress_Form1); with Panel do begin Parent := Progress_Form1; Align := alClient; BevelInner := bvNone; BevelOuter := bvRaised; Caption := ''; end; Prompt := TLabel.Create(Panel); with Prompt do begin Parent := panel; AutoSize := True; Left := 25; Top := 25; Caption := 'labeltext'; end; ProgressBar1 := TProgressBar.Create(panel); with ProgressBar1 do begin Parent := panel; Left := 20; Top := 50; Height := 18; Width := 260; end; except end; end;end; to: fuzhan820(fzd)我的麻烦在于:我要在自己的窗口中运行excel你的方法会显示一个独立的excel窗口 向高手求救:縮放,拖動顯示圖片程序 最强大的 delphi 正则控件 生成xml文件,因过大而出现的问题 糊里糊涂?!:) 如何实现客户编号的递增? 求助:关闭指定的隐藏程序 如何显示一个16进制数? delphi的treeview节点为何显示不出汉字 ?***急急****? 高手能否…… 如何将图象设为墙纸? 如何获得一个硬盘分区的序列号????
procedure Tbroview.Button2Click(Sender: TObject);
begin
broview.PUBWriteExcel(DBGrid1, datetostr(date),screen.ActiveCustomForm.Caption);
end;procedure Tbroview.PUBWriteExcel(FDBGrid1: TDBGrid; sName,Title1: string);
var
ExcelID: Variant;
k, i, j: integer;
filename: string;
begin
if FDBGrid1.DataSource.DataSet.IsEmpty then
begin
beep;
showmessage('没有可导出的数据!');
exit;
end; filename:= concat(extractfilepath(application.exename), sName, '.xls'); try
ExcelID:= CreateOleObject('Excel.Application' ); //创建 Excel 对象
ExcelID.Caption :='图书室信息管理系统'+'--调用 Microsoft Excel 打开导出文件'; //更改 Excel 标题栏
except
Application.Messagebox(pchar('Excel 没有安装!'),pchar(trim('system_name')), MB_ICONERROR + mb_Ok);
Abort;
end; try
PubCreate_ProgressForm(self,'正在导出数据,请稍候...');//显示进度框
Progress_Form1.Show;
ProgressBar1.Max := FDBGrid1.DataSource.DataSet.RecordCount; ExcelID.Workbooks.Add;
FDBGrid1.DataSource.DataSet.DisableControls; //禁止dbgrid记录移动
FDBGrid1.DataSource.DataSet.First;
for j := 0 to FDBGrid1.Columns.Count - 1 do //插入字段名
begin
ExcelID.Worksheets[1].Cells[3, j + 1] := FDBGrid1.Columns[j].Title.Caption;
ExcelID.Worksheets[1].Cells.item[3, j + 1].font.size := '10';
end; k:=2;
for i := 4 to FDBGrid1.DataSource.DataSet.RecordCount + 3 do //插入记录(记录循环)
begin
ProgressBar1.Position := k;
for j := 0 to FDBGrid1.FieldCount - 1 do //DBGrid列循环
begin
ExcelID.Worksheets[1].Cells.item[i, j + 1] :=
FDBGrid1.Fields[j].Asstring;
ExcelID.Worksheets[1].Cells.item[i, j + 1].font.size := '10';
end;
FDBGrid1.DataSource.DataSet.Next;
k:=k+1;
end; ExcelID.Worksheets[1].Columns.AutoFit; //宽度自适应
ExcelID.Worksheets[1].Cells.item[1, 2] := Title1; //标题内容
ExcelID.Worksheets[1].Cells.Item[1, 2].font.size := '14'; //标题大小
finally
FDBGrid1.DataSource.DataSet.EnableControls;
ExcelID.Visible := true; //显示EXCEL窗口
ProgressBar1.Position :=0;
Progress_Form1.Close;
end;
end;//{创建进度显示窗口}
procedure Tbroview.PubCreate_ProgressForm(AOwner: TComponent;Labeltext:string);
var
Panel: TPanel;
Prompt: TLabel; {提示的标签}
begin
if assigned(Progress_Form1) then exit; Progress_Form1 := TForm.Create(AOwner);
with Progress_Form1 do
begin
try
Font.Name := '宋体'; {设置字体}
Font.Size := 9;
BorderStyle := bsNone;
Width := 300;
Height := 100;
BorderWidth := 2;
Color := clBlue;
Position := poScreenCenter; Panel := TPanel.Create(Progress_Form1);
with Panel do
begin
Parent := Progress_Form1;
Align := alClient;
BevelInner := bvNone;
BevelOuter := bvRaised;
Caption := '';
end; Prompt := TLabel.Create(Panel);
with Prompt do
begin
Parent := panel;
AutoSize := True;
Left := 25;
Top := 25;
Caption := 'labeltext';
end; ProgressBar1 := TProgressBar.Create(panel);
with ProgressBar1 do
begin
Parent := panel;
Left := 20;
Top := 50;
Height := 18;
Width := 260;
end; except
end;
end;
end;
我的麻烦在于:
我要在自己的窗口中运行excel
你的方法会显示一个独立的excel窗口