Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

delphi и Word   Найти похожие ветки 

 
Homa_Programer ©   (2004-09-22 23:58) [0]

Народ , помогите как создавать отчеты в Ворде?
Помогите чем можите, хоть глупостями, ведь они тоже бывают умными...


 
GanibalLector ©   (2004-09-23 00:03) [1]

Не понял.Т.е. есть некий набор данных в Delphi,а тебе его нужно в  Word??? И еще,как вставлять закладками или все разом???


 
jack128 ©   (2004-09-23 00:32) [2]

Homa_Programer ©   (22.09.04 23:58)
Обычно отчет делают по шаблону.
Шаблон - это обычный документ Ворд, но нужных местах в этом домументе вписаны ключевые слова. При создании отчета ты ищешь эти ключевые слова и заменяешь их на свои данные.


 
Homa_Programer ©   (2004-09-23 01:04) [3]

все разом вставлять... и вообще если естькакая инфа по этой теме киньте на почту... я тока начал осваивать Ворд через делфу...даже можно сказать еще не начал... так что я не совсем понимаю ваши вопросы...

Если по шаболну то как? и Если без шаблона тоже КАК?

а на 1-й вопрос : скорее всего разом.


 
GanibalLector ©   (2004-09-23 01:49) [4]

Выбирай:

unit WordClipUnit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls;

type
TForm1 = class(TForm)
  StringGrid1: TStringGrid;
  Button1: TButton;
  procedure FormCreate(Sender: TObject);
  procedure Button1Click(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

function GetGridClipText(Grid: TStringGrid): string;
var Str: string;
  x, y: integer;
  StartHTML,
  EndHTML,
  StartFragment,
  EndFragment: integer;

const Line01 = "Version:1.0"#13#10;
    Line02 = "StartHTML:000000000"#13#10;
    Line03 = "EndHTML:000000000"#13#10;
    Line04 = "StartFragment:000000000"#13#10;
    Line05 = "EndFragment:000000000"#13#10;
    Line06 = "StartSelection:000000000"#13#10;
    Line07 = "EndSelection:000000000"#13#10;
    Line08 = "Source: by Dec`s procedure"#13#10;
    Line09 = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">"#13#10;
    Line10 = "<HTML><HEAD></HEAD>"#13#10;
    Line11 = "<BODY>"#13#10;
    Line12 = "<TABLE border=1><!--StartFragment-->"#13#10;
    Line13 = "<TBODY>"#13#10;

    Line14 = "</TBODY><!--EndFragment--><!--EndFragment-->"#13#10;
    Line15 = "<!--EndFragment--></TABLE>"#13#10;
    Line16 = "</BODY>"#13#10;
    Line17 = "</HTML>"#13#10;

    Offset1 = Length(Line01 + Line02) -2;
    Offset2 = Length(Line01 + Line02 + Line03) -2;
    Offset3 = Length(Line01 + Line02 + Line03 + Line04) -2;
    Offset4 = Length(Line01 + Line02 + Line03 + Line04 + Line05) -2;
    Offset5 = Length(Line01 + Line02 + Line03 + Line04 + Line05 + Line06) -2;
    Offset6 = Length(Line01 + Line02 + Line03 + Line04 + Line05 + Line06 + Line07) -2;

procedure FillStringWithNum(var Str: string; Offset: integer; Num: integer);
var i: integer;
begin
  while Num > 0 do  begin
    i := Num Mod 10;
    Str[Offset] := Chr(Ord("0") + i);
    dec(Offset);
    Num := Num div 10;
  end;
end;

begin
Str := Line01 + Line02 + Line03 + Line04 + Line05 +
       Line06 + Line07 + Line08 + Line09;
StartHTML := Length(Str);
Str := Str + Line10 + Line11 + Line12;
StartFragment := Length(Str);
Str := Str + Line13;
with Grid do begin
  for y := 0 to RowCount - 1 do
    begin
      str := str + "<TR>"#13#10;
      for x := 0 to ColCount - 1 do
        begin
          str := str + "<TD>" + Cells[x, y] + "</TD>";
        end;
      str := str + #13#10"</TR>"#13#10;
    end;
end;
Str := Str + Line14;
EndFragment := Length(Str);
Str := Str + Line15 + Line16 + Line17;
EndHTML := Length(Str);
FillStringWithNum(Str, Offset1, StartHTML);
FillStringWithNum(Str, Offset2, EndHTML);
FillStringWithNum(Str, Offset3, StartFragment);
FillStringWithNum(Str, Offset4, EndFragment);
FillStringWithNum(Str, Offset5, StartFragment);
FillStringWithNum(Str, Offset6, EndFragment);
result := str;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Options := StringGrid1.Options + [goEditing]
end;

procedure TForm1.Button1Click(Sender: TObject);
var str: string;
  hData: HGlobal;
  pData: pointer;
  Len: LongInt;
  zzz: integer;
begin
zzz := 52863;;
OpenClipboard(Application.Handle);
str := GetGridClipText(StringGrid1);
Len:=length(str);
hData:=GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, Len);
pData:=GlobalLock(hData);
Move(PChar(str)^, pData^, Len);
EmptyClipboard;
SetClipboardData(zzz,hData);
GlobalUnlock(hData);
CloseClipboard;
end;

end.


или

procedure TForm1.Button1Click(Sender: TObject);
var App, Rgn : variant;
  i, j: integer;
  str: string;
const Sep = "#";  //любой символ
begin
App:= CreateOleObject("Word.Application");
App.Visible := true;
App.Documents.Add;
Rgn := App.Selection.Range;
Rgn.Collapse(0);

for i := 0 to StringGrid1.RowCount - 1 do
  begin
    str := "";
    for j := 0 to StringGrid1.ColCount - 2 do
      str := str + StringGrid1.Cells[j, i] + Sep;
    str := str + StringGrid1.Cells[StringGrid1.ColCount - 1, i];
    Rgn.InsertAfter(str);
    Rgn.InsertParagraphAfter;
  end;
Rgn.ConvertToTable(Sep);

App := null;
end;



 
jack128 ©   (2004-09-23 01:51) [5]

Homa_Programer ©   (23.09.04 1:04) [3]
а на 1-й вопрос : скорее всего разом.


Всгда лудше разом. Ибо это быстрее.  

Вообще о взаимодествии ворда почитай на Королевстве Дельфи, там кажется были статейки про это.. Да и вообще Яндекс в зубы и вперёд - если не лесть в дебри, то тема достаточно простая..


 
YurikGL ©   (2004-09-23 08:52) [6]

http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084962208


 
muzik   (2004-09-24 10:10) [7]

мдя..чота я не вижу тут даже близко ответа по теме


 
TUser ©   (2004-09-24 10:12) [8]

Есть статьи на Королевстве Делфи.


 
Homa_Programer ©   (2004-09-28 22:55) [9]

благодарю всех за помощь)))



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.034 c
1-1096538930
Yuri Btr
2004-09-30 14:08
2004.10.17
Application.Title проблема


1-1096820240
M-Alex
2004-10-03 20:17
2004.10.17
Command


6-1091819499
new developer
2004-08-06 23:11
2004.10.17
Помогите сделать в NNSMTP русский шрифт


3-1095341826
Koala
2004-09-16 17:37
2004.10.17
Помогите с тригером


6-1090086995
AlexeyM
2004-07-17 21:56
2004.10.17
Использование CGI





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский