在delphi中怎样打开excel模板?(50分)

  • 主题发起人 主题发起人 xiongjz
  • 开始时间 开始时间
X

xiongjz

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,请问怎样在delphi中打开一个设计好的excel模板用哪一个函数?
 

请试一下如下代码(注意:uses中须加入comobj单元):
其中:book2.xlt为excel的模板文件。
procedure TForm1.Button1Click(Sender: TObject);
var
ex1:variant;
begin
ex1:=createoleobject('excel.sheet');
ex1.application.visible:=true;
ex1.application.Workbooks.Open('d:/book2.xlt');
ex1.application.ActiveWindow.WindowState:=2;//最大化
end;
 
用D5的Server组控件比较好。如下:
在Form上放ExcelApplication1、ExcelWorkbook1、ExcelWorksheet1三个控件。
procedure TForm1.Button3Click(Sender: TObject);
var
idx:integer;
begin
ExcelApplication1.Connect;
ExcelApplication1.Visible[0]:=True;
ExcelApplication1.Workbooks.Add('C:/Program Files/Microsoft Office/Templates/XEKFBB.xlt',0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _WorkSheet);
ADOQuery1.First;
idx:=7;
while not ADOQuery1.Eofdo
begin
ExcelWorksheet1.Cells.Item[idx,1]:=ADOQuery1.FieldValues['unitcode'];
ExcelWorksheet1.Cells.Item[idx,2]:=ADOQuery1.FieldValues['itemcode'];
ExcelWorksheet1.Cells.Item[idx,3]:=ADOQuery1.FieldValues['itemname'];
ExcelWorksheet1.Cells.Item[idx,4]:=ADOQuery1.FieldValues['speci'];
ExcelWorksheet1.Cells.Item[idx,5]:=ADOQuery1.FieldValues['qty'];
ExcelWorksheet1.Cells.Item[idx,6]:=ADOQuery1.FieldValues['qtyunit'];
ExcelWorksheet1.Cells.Item[idx,7]:=ADOQuery1.FieldValues['rprice'];
ExcelWorksheet1.Cells.Item[idx,8]:=ADOQuery1.FieldValues['minstock'];
ExcelWorksheet1.Cells.Item[idx,9]:=ADOQuery1.FieldValues['unpaid'];
ADOQuery1.Next;
idx:=idx+1;
end;
ExcelWorksheet1.Cells.Item[idx,1]:='合计:';
ExcelWorksheet1.Cells.Item[idx,5]:='=SUM(E7:E'+IntToStr(idx-1)+')';
end;

关闭时用
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
 
我用两位大虾的方法,都能打开excel模板,但是怎样进行excel文件的修改.保存一系列的操作?我在delphi的帮助中查不到相关的内容,再次请问两位大虾,在帮助中怎样查找这些内容?谢谢!!
 
关于对 Excel 模板的操作同意前两位的做法。
Delphi 中没有关于 OLEAutomation 的部分,可以看一些书,
关于 Excel 文件的修改、保存等操作,主要是以下的语句:
MyWorkBook.WorkSheets[1].Cells[i,j].Value := table1Field1.AsString;
try
MyWorkBook.saveas(strFileName);
MyWorkBook.close;
ExcelApp.Quit;
ExcelApp:=Unassigned;
//释放VARIANT变量
except //当存为一个已有的文档而又不覆盖时将
MyWorkBook.close;
//产生一个例外
ExcclApp.Quit;
end;

 
chencpm 的修改一下:
procedure TForm1.Button1Click(Sender: TObject);
var
ex1:variant;
begin
ex1:=createoleobject('excel.sheet');
ex1.application.visible:=true;
// ex1.application.Workbooks.Open('d:/book2.xlt');
ex1.application.Workbooks.Add('d:/book2.xlt');//反正是新建一个工作簿,有那么个参数。
ex1.application.ActiveWindow.WindowState:=2;//最大化
end;



 
在delphi 3的选择project|import type library...菜单,然后点击Add按钮,选择office
执行文件所在目录下的*.olb(Excel的文件为excel8.olb),点击OK按钮即将excel中的函数
及常数名称导入$delphi$/imports/excel_tlb.pas文件中。打开该文件就可以看到所需要
用到的函数等的使用方式。
 
感谢各位,还有一个小问题
请问有谁知道用什么函数可以去掉一个字符串中的所有的空格
如:
function(胸 12 发 )返回值 胸12发
谢谢
 
多人接受答案了。
 
后退
顶部