老大这个东西需要问人吗?
需要吗不需要吗。
你可以用录制word宏的办法来得到vba代码
然后再改写成delphi不就行了吗
需要吗不需要吗。
你可以用录制word宏的办法来得到vba代码
然后再改写成delphi不就行了吗
解决方案 »
- delphi 2010 老是提示dclcxSchedulerGridD14.bpl. 找不到指定的模块
- delphi 中的 canvas 如何设置 将要保存的bmp文件为黑白 颜色
- 请问一下治疗过近视的朋友
- 请问这个SQL应如何写?给50分 线上等
- 引用参数 和 常量参数 分别在哪里??
- 一个关于timer的问题!请各位帮忙!!
- 那位大哥有reportmachine2.4以后的版本
- 三层结构问题!
- 请问,在TreeView控件中有没有选中事件也就是当前接点选中,而不是onclick
- 在win2000下如何实现远程抓屏
- 问一下,谁用过财务专用的Grid,带借贷金额的,哪里有下载?Thank you!!!
- 一个delphi中调用sql的问题
var
WordApp,WordDoc,WordParagraph,WordRange,WordTable:variant;
SltRec,SltCol,VisCol :integer;
ColIndex,RowIndex : Integer;
selr,selc,j,hh,lh:integer;
allself:boolean;
begin
if VarIsEmpty(WordApp) then
WordApp := CreateOleObject('word.Application'); WordDoc := WordApp.documents.add;
WordParagraph := WordApp.activedocument.paragraphs.add; WordRange := WordParagraph.range;
WordRange.text:= Table1.TableName +#13+' ';
WordRange.Font.Size := 18;
WordRange.Font.Name := '宋体';
// WordRange.Font.style := fsbold; WordApp.Visible := true;
//统计打印行数
SltRec:=0;
SltRec:=DBGrid1.SelectedRows.Count;
if SltRec = 0 then
SltRec := Table1.RecordCount; //统计打印列数
allself:=True;
SltCol := 0;
VisCol := 0;
for j:= 0 to DBGrid1.Columns.Count-1 do
begin
if DBGrid1.Columns[J].Visible then
begin
VisCol := VisCol + 1; if DBGrid1.Columns[j].Title.Color=clAqua then
begin
SltCol := SltCol + 1;
end;
end;
end;
if SltCol = 0 then
SltCol := VisCol; WordRange := WordApp.ActiveDocument.Content;
WordRange.Collapse(wdCollapseEnd);
WordTable:= WordApp.activedocument.tables.add(WordRange,SltRec + 1,SltCol); {打印表头}
ColIndex := 1;
for j := 0 to dbgrid1.Columns.Count-1 do
begin
if SltCol <> VisCol then
begin
if (dbgrid1.Columns[j].Visible = false) or (dbgrid1.Columns[j].Title.color <> clAqua) then
Continue;
end; WordTable.Cell(1,ColIndex).Range.InsertAfter(dbgrid1.Columns[j].Title.Caption);
DBGrid1.Columns[J].Title.Color := clAqua;
ColIndex := ColIndex + 1;
end; //打印数据
Table1.First;
RowIndex := 2;
ColIndex := 1;
while not Table1.Eof do
begin
if SltRec <> Table1.RecordCount then
begin
if dbgrid1.SelectedRows.CurrentRowSelected = false then
begin
Table1.Next;
Continue;
end;
end; for j := 0 to dbgrid1.Columns.Count-1 do begin
if (dbgrid1.Columns[j].Visible<>false) and (dbgrid1.Columns[j].Title.color=clAqua) then
begin
WordTable.Cell(RowIndex,ColIndex).Range.InsertAfter
(Table1.Fieldbyname(dbgrid1.Columns[j].FieldName).asstring);
ColIndex := ColIndex + 1;
end;
end;
RowIndex := RowIndex + 1;
ColIndex := 1;
Table1.Next;
end;{End of While...not...}
end;procedure TForm1.Button2Click(Sender: TObject);
var
WordApp,WordDoc,WordParagraph,WordRange,WordTable:variant;
begin
try
WordApp:=CreateOleObject('Word.Basic');
// WordDoc := WordApp.documents.add;
WordApp.FileOpen('c:\证书.doc');
WordApp.EditReplace('姓名','123');
WordApp.appshow;
finally
if not VarIsEmpty(WordApp) then
WordApp.Quit;
end这是我写的一个从数据库中导入数据到word的程序,其中包括了对表格的处理,希望可以给你帮助
我正因为用过 "录制word宏的办法来得到vba代码" 而不成才问嘛,
在DELPHI中的ADD 老是说参数不对,教一教嘛,拜托了.
我正因为用过 "录制word宏的办法来得到vba代码" 而不成才问嘛,
在DELPHI中的ADD 老是说参数不对,教一教嘛,拜托了.
数据类型不同的原因造成的
你可以试试传递指针来解决
比如int num
(@num)
往往可以
请各位老大在帮忙想想办法.
numrows := 2;
numcols := 1;
mergeSplit := False;//定义为OleVariant wrdDoc.Document.Tables.Item (iTableId{第几个表格}).Rows.Item (iRowCount{第几行}).Cells.Split (numRows, numCols, mergesplit); //以行拆分
//要求之前不能有纵向合并的单元格。否则按下循环处理,i为列号
wrdDoc.Document.Tables.Item (iTableId{第几个表格}).Cell(iRowCount,i+1).Split(numrows,numcols); //以单元格循环拆分,速度慢
WordDocument1.Tables.Item(TableNum).Rows.Add()
应该传递什么参数和返回什么东西,怎么使用.
现在 wk_knife(我在地狱和天堂之间晃悠!两边都很热闹!) 帮我解决了问题,我只能把分给他.