Главная страница
    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.06 c
4-1094799173
nester
2004-09-10 10:52
2004.10.17
Как можно узнать когда закончила запускаться внешняя программа?


1-1096919204
KiD
2004-10-04 23:46
2004.10.17
Поиск директорий по списку


14-1096269662
Layner
2004-09-27 11:21
2004.10.17
Американская винда не правильно определяет кол-во


1-1096535510
Senti
2004-09-30 13:11
2004.10.17
Вопрос по созданию формы...


8-1090855559
asat
2004-07-26 19:25
2004.10.17
Graphics32





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский