arkadaşlar konu aynı olduğu için yeni başlık açmak istemiyorum.
Word dosyasına sekmeler oluşturuyorum. fakat bu dosyayı bilgisayarda saklamak istemiyorum. word dosyasını xml e dönüştürüp vt de saklamak istiyorum. sonrasında tekrar doc olarak kaydedip göstermek istiyorum.
nasıl yapacağım ile ilgili yardım ederseniz sevinirim.
Word belgesinin istenilen satırına bilgi yazmak.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Word belgesinin istenilen satırına bilgi yazmak.
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Re: Word belgesinin istenilen satırına bilgi yazmak.
Merhaba.
- Aşağıda hepsinin bir arada olduğu bir örnek hazırladım. BLOB hakkında sorulabilecek benzer sorular, farklı veritabanları da olsa aynı şekilde çözümlenebilmektedir.
(1) WORD'den XML olarak kaydedeceğiz. Elimizdeki malzeme bunu gerektiriyor çünkü.
(2) Veritabanının BLOB alanlarından birine yerleştirecek ve kaydedeceğiz...
(3) Veritabanın'dan arama yapıp alacak ve WORD ile açacağız...
- Sana PDF, XPS ve XML olmak üzere (3) alternatifli bir örnek hazırladım.
// Const ile yazdığım rakamlar bu linkteki MSDN'den aldığım referanslar.
// Burası WORD'ü XML olarak kaydetmen için aşağıdaki satırı kod içerisinde göreceksin...
Doc.SaveAs( ChangeFileExt(WordDosya, '.XML'), wdExportFormatXML );
// Burası bu XML dosyasını veritabanındaki BLOB alana yerleştirme için aşağıdaki satırı kod içerisinde göreceksin...
Parametre olarak : Parameters.ParamByName('O_WordXML').LoadFromFile(XMLDosya, ftBLOB);
Field Olarak : TBlobField( FieldByName('O_WordXML') ).LoadFromFile(XMLDosya);
// Bu da son olarak geri okumak için aşağıdaki satırı kod içerisinde göreceksin...
TBlobField( FieldByName('O_WordXML') ).SaveToFile(XMLDosya);
- Aşağıda hepsinin bir arada olduğu bir örnek hazırladım. BLOB hakkında sorulabilecek benzer sorular, farklı veritabanları da olsa aynı şekilde çözümlenebilmektedir.

(1) WORD'den XML olarak kaydedeceğiz. Elimizdeki malzeme bunu gerektiriyor çünkü.
(2) Veritabanının BLOB alanlarından birine yerleştirecek ve kaydedeceğiz...
(3) Veritabanın'dan arama yapıp alacak ve WORD ile açacağız...
- Sana PDF, XPS ve XML olmak üzere (3) alternatifli bir örnek hazırladım.
// Const ile yazdığım rakamlar bu linkteki MSDN'den aldığım referanslar.
// Burası WORD'ü XML olarak kaydetmen için aşağıdaki satırı kod içerisinde göreceksin...
Doc.SaveAs( ChangeFileExt(WordDosya, '.XML'), wdExportFormatXML );
Kod: Tümünü seç
Const
wdExportFormatPDF = 17;
wdExportFormatXPS = 18;
wdExportFormatXML = 19;
var
Word, Doc: Variant;
WordDosya : String;
begin
WordDosya := ExtractFilePath(Application.Exename) + 'word.doc';
Word := ComObj.CreateOleObject('Word.Application');
Word.Documents.Add;
Doc := Word.ActiveDocument;
Doc.ActiveWindow.Selection.TypeText('Test Ediyorum... ĞÜŞİÖÇIğüşiöçı...') ;
Doc.SaveAs( ChangeFileExt(WordDosya, '.XML'), wdExportFormatXML );
Word.Quit( False );
Doc := UnAssigned;
Word := UnAssigned;
end;
Parametre olarak : Parameters.ParamByName('O_WordXML').LoadFromFile(XMLDosya, ftBLOB);
Field Olarak : TBlobField( FieldByName('O_WordXML') ).LoadFromFile(XMLDosya);
Kod: Tümünü seç
Var
WordDosya,
Ad, Soyad, XMLDosya : String;
begin
WordDosya := ExtractFilePath(Application.Exename) + 'word.doc';
Ad := 'Muharrem';
Soyad := 'ARMAN';
XMLDosya := ChangeFileExt(WordDosya, '.XML');
With TAdoQuery.Create(nil) do
begin
Try
Connection := AdoConnection1;
SQL.Clear; // Create edildiğinden gerekli değil ama alışkanlık kaybolmasın...
SQL.Add('INSERT INTO TestTable');
SQL.Add('( O_Adi, O_Soyadi, O_WordXML ) ');
SQL.Add(' VALUES ');
SQL.Add('( :O_Adi, :O_Soyadi, :O_WordXML ) ');
Parameters.ParamByName('O_Adi').Value := Ad;
Parameters.ParamByName('O_Soyadi').Value := Soyad;
Parameters.ParamByName('O_WordXML').LoadFromFile(XMLDosya, ftBLOB);
ExecSQL;
Finally
Free;
End;
end;
end;
TBlobField( FieldByName('O_WordXML') ).SaveToFile(XMLDosya);
Kod: Tümünü seç
Var
Word : Variant;
Ad, Soyad, XMLDosya : String;
begin
Ad := 'Muharrem';
Soyad := 'ARMAN';
XMLDosya := ExtractFilePath(Application.Exename) + 'word2.xml';
With TAdoQuery.Create(nil) do
begin
Try
Connection := ADOConnection1;
SQL.Clear; // Create edildiğinden gerekli değil ama alışkanlık kaybolmasın...
SQL.Add('SELECT * FROM TestTable');
SQL.Add('WHERE O_Adi = :O_Adi AND O_Soyadi = :O_Soyadi');
SQL.Add('ORDER BY KaySiraNo DESC');
Parameters.ParamByName('O_Adi').Value := Ad;
Parameters.ParamByName('O_Soyadi').Value := Soyad;
Active := True;
if NOT EOF then
begin
TBlobField( FieldByName('O_WordXML') ).SaveToFile(XMLDosya);
if FileExists( XMLDosya ) then begin
Word := ComObj.CreateOleObject('Word.Application');
Try
Word.Documents.Open( XMLDosya );
Word.Visible := True;
Finally
Word := UnAssigned;
End;
end;
end;
Active := False;
Finally
Free;
End;
end;
end;
Re: Word belgesinin istenilen satırına bilgi yazmak.
hocam dediğiniz işlemleri yapıyorum ama word sayfasını boş kaydediyor.
Kaydetmek İçin
Geri Çıkarmak için
buda tablom (belki burda bi yanlışlık vardır.)
Kaydetmek İçin
Kod: Tümünü seç
procedure TForm1.Button3Click(Sender: TObject);
Const
wdExportFormatPDF = 17;
wdExportFormatXPS = 18;
wdExportFormatXML = 19;
var
Word, Doc: Variant;
WordDosya : String;
Ad, Soyad, XMLDosya : String;
begin
// WORD DOSYASINI XMLE ÇEVİR
WordDosya := FileOpenDialogWord.FileName;
Word := ComObj.CreateOleObject('Word.Application');
Word.Documents.Add;
Doc := Word.ActiveDocument;
Doc.SaveAs( ChangeFileExt(WordDosya, '.XML'), wdExportFormatXML );
Word.Quit( False );
Doc := UnAssigned;
Word := UnAssigned;
// XML DOSYASINI VT YE KAYDET
XMLDosya := ChangeFileExt(WordDosya, '.XML');
memo1.Lines.LoadFromFile(XMLDosya);
IBDSablonlar.Edit;
IBDSablonlarSABLON.Value := MEMO1.Text;;
IBDSablonlarDOSYAADI.Value := WordDosya;
IBDSablonlar.Post;
DeleteFile(XMLDosya)
end;
Kod: Tümünü seç
procedure TForm1.Button4Click(Sender: TObject);
Var
Word : Variant;
Ad, Soyad, XMLDosya : String;
begin
Ad := 'Erkan ';
Soyad := 'ÇAĞLAR';
XMLDosya := ExtractFilePath(Application.Exename) + 'word.doc';
Try
memo1.Text := IBDSablonlarSABLON.Value;
memo1.Lines.SaveToFile(XMLDosya);
if FileExists( XMLDosya ) then begin
Word := ComObj.CreateOleObject('Word.Application');
Try
Word.Documents.Open( XMLDosya );
Word.Visible := True;
Finally
Word := UnAssigned;
End;
end;
Finally
End;
end;
Kod: Tümünü seç
CREATE TABLE TBLSABLONLAR (
SABLONID INTEGER NOT NULL,
SABLONADI VARCHAR(50),
SABLONTURU VARCHAR(50),
SABLON BLOB SUB_TYPE 1 SEGMENT SIZE 500,
DOSYAADI VARCHAR(200)
);
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Re: Word belgesinin istenilen satırına bilgi yazmak.
Word dökümanını açmıyor, boş bir döküman ekliyorsun ve o boş olanı kaydediyorsun. Dolayısı ile boş döküman dediğin sorunla karşılaşıyorsun.
olan yere dikkatini çekerim 
Kod: Tümünü seç
Word.Documents.Add;

Re: Word belgesinin istenilen satırına bilgi yazmak.
Kod: Tümünü seç
.
.
.
WordDosya := FileOpenDialogWord.FileName;
Word := ComObj.CreateOleObject('Word.Application');
Word.Documents.Open(WordDosya);
Doc := Word.ActiveDocument;
Doc.SaveAs( ChangeFileExt(WordDosya, '.XML'), wdExportFormatXML );
.
.
.
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR