高分求解,请用DELPHI控制WORD及EXCEL的高手指点,因不知问题有没有可行的解决方案,故暂时只给50分,如果确实解决了,再加200分

zhengkapi 2002-05-18 10:29:15
我想在delphi应用程序中显示WORD及EXCEL文档,同时将word或excel的工具菜单都隐起来,但必需保留一个在文档中插入批注的功能,而且文档最好是只读的,就是文档原文不能被修改,但又要求插下的批注能够保存,请高手指点有没有办法实现,
...全文
29 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengkapi 2002-06-10
  • 打赏
  • 举报
回复
其实这个问题并没有得到真正解决,
不过放在这里很久了,
如果总不结贴也不好,
就此结了吧
hx_zm 2002-05-19
  • 打赏
  • 举报
回复
提供一个最简单的方法:

把你想要的功能与步骤在word and excel 里做一边,
利用宏定义功能录制下来,将它套入你的代码
zhengkapi 2002-05-19
  • 打赏
  • 举报
回复
TO:womanlee(小蜜蜂)
你说的资料我也有,不是我想要的,我现在是要将所有的功能都关掉,但须保留一个插入批注的功能
womanlee 2002-05-19
  • 打赏
  • 举报
回复
下面这个说得行清除了,我原来的代码,有很多是别的用途的

记住要先 use comobj
如果还有什么设置不懂的话,可以现在excel里面录制宏,来看看
(一) 使用动态创建的方法

首先创建 Excel 对象,使用ComObj:
var ExcelApp: Variant;
ExcelApp := CreateOleObject( 'Excel.Application' );

1) 显示当前窗口:
ExcelApp.Visible := True;

2) 更改 Excel 标题栏:
ExcelApp.Caption := '应用程序调用 Microsoft Excel';

3) 添加新工作簿:
ExcelApp.WorkBooks.Add;

4) 打开已存在的工作簿:
ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );

5) 设置第2个工作表为活动工作表:
ExcelApp.WorkSheets[2].Activate;

ExcelApp.WorksSheets[ 'Sheet2' ].Activate;

6) 给单元格赋值:
ExcelApp.Cells[1,4].Value := '第一行第四列';

7) 设置指定列的宽度(单位:字符个数),以第一列为例:
ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;

8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米

9) 在第8行之前插入分页符:
ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1;

10) 在第8列之前删除分页符:
ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;

11) 指定边框线宽度:
ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )

12) 清除第一行第四列单元格公式:
ExcelApp.ActiveSheet.Cells[1,4].ClearContents;

13) 设置第一行字体属性:
ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书';
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;
ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;
ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;

14) 进行页面设置:

a.页眉:
ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示';
b.页脚:
ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页';
c.页眉到顶端边距2cm:
ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
d.页脚到底端边距3cm:
ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
e.顶边距2cm:
ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;
f.底边距2cm:
ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
g.左边距2cm:
ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
h.右边距2cm:
ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;
i.页面水平居中:
ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
j.页面垂直居中:
ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
k.打印单元格网线:
ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;

15) 拷贝操作:

a.拷贝整个工作表:
ExcelApp.ActiveSheet.Used.Range.Copy;
b.拷贝指定区域:
ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy;
c.从A1位置开始粘贴:
ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
d.从文件尾部开始粘贴:
ExcelApp.ActiveSheet.Range.PasteSpecial;

16) 插入一行或一列:
a. ExcelApp.ActiveSheet.Rows[2].Insert;
b. ExcelApp.ActiveSheet.Columns[1].Insert;

17) 删除一行或一列:
a. ExcelApp.ActiveSheet.Rows[2].Delete;
b. ExcelApp.ActiveSheet.Columns[1].Delete;

18) 打印预览工作表:
ExcelApp.ActiveSheet.PrintPreview;

19) 打印输出工作表:
ExcelApp.ActiveSheet.PrintOut;

20) 工作表保存:
if not ExcelApp.ActiveWorkBook.Saved then
ExcelApp.ActiveSheet.PrintPreview;

21) 工作表另存为:
ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' );

22) 放弃存盘:
ExcelApp.ActiveWorkBook.Saved := True;

23) 关闭工作簿:
ExcelApp.WorkBooks.Close;

24) 退出 Excel:
ExcelApp.Quit;
firetoucher 2002-05-19
  • 打赏
  • 举报
回复
delphi光盘上的示例目录下activex目录有例子
自己看吧!
zhengkapi 2002-05-19
  • 打赏
  • 举报
回复
TO:: womanlee(小蜜蜂)
上面这段代码起什么作用?能够加点注释吗
womanlee 2002-05-19
  • 打赏
  • 举报
回复
var i,m,n,j:integer;
ExcelApp:Variant;
mysql:string;
begin

ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.Visible := True;
query4.Close;
query4.sql.Clear;
query4.sql.Add('select dwdm from dp_dwszb where dwmc='+''''+combobox1.text+'''');
query4.open;
frmtongji.sqlstr:=' and a.dwdm='+trim(query4.fieldbyname('dwdm').asstring);

//ExcelApp.WorkBooks.Add;
ExcelApp.WorkBooks.Open('政治文化面貌结构.xls');
ExcelApp.ActiveSheet.PageSetup.PrintGridlines:=true;
ExcelApp.ActiveSheet.PageSetup.CenterHorizontally:=true;
ExcelApp.ActiveSheet.PageSetup.CenterHeader:='&28政治面貌文化结构报表';
ExcelApp.ActiveSheet.PageSetup.PrintTitleRows:='$1:$1';
ExcelApp.ActiveSheet.PageSetup.PrintTitleColumns:='$A:$A';
ExcelApp.ActiveSheet.PageSetup.LeftFooter:=date;
ExcelApp.ActiveSheet.PageSetup.CenterFooter:='第&P页';
ExcelApp.ActiveSheet.PageSetup.RightFooter:='总共&N页';
//ExcelApp.WorkSheets[1].Activate;
.ActiveSheet.PrintPreview;
zhengkapi 2002-05-19
  • 打赏
  • 举报
回复
请高手指点呀
womanlee 2002-05-19
  • 打赏
  • 举报
回复
用宏嘛,我没有做过这样的东西,不过我都是先把宏录制下来,然后看看就是了呀。
zhengkapi 2002-05-19
  • 打赏
  • 举报
回复
请高手指点呀,没有办法解决了吗
zhengkapi 2002-05-18
  • 打赏
  • 举报
回复
TO:lxpbuaa(桂枝香在故国晚秋)
请问用什么组件呀,可不可以给代码参考?
lxpbuaa 2002-05-18
  • 打赏
  • 举报
回复
使用Servers下的组件即可搞定。


--------------------------------------------------
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;


       
lxpbuaa 2002-05-18
  • 打赏
  • 举报
回复
出来这么多?
lxpbuaa 2002-05-18
  • 打赏
  • 举报
回复
使用Servers下的组件即可搞定。
登临送目,正故国晚秋,天气初肃。
千里澄江似练,翠峰如簇。
归帆去棹残阳里,背西风、酒旗斜矗。
彩舟云淡,星河鹭起,画图难足。

念往昔,繁华竞逐。
叹门外楼头,悲恨相续。千古凭高,对此漫嗟荣辱。
六朝旧事随流水,但寒烟、芳草凝绿。
至今商女,时时犹唱,后庭遗曲。

       
zhengkapi 2002-05-18
  • 打赏
  • 举报
回复
TO:notdo(无为)
这本书在那里有DOWN呀,我现在手头没有这本书
NotDo 2002-05-18
  • 打赏
  • 举报
回复
很多书有介绍,如<<delphi5实务经典>>等等

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧