delphi aynı excel belgesi içine sayfa sayfa export

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
diseqc
Üye
Mesajlar: 44
Kayıt: 21 May 2009 04:03

delphi aynı excel belgesi içine sayfa sayfa export

Mesaj gönderen diseqc »

Merhaba;

Projede 3 fakrlı gird içeriğindeki verileri excel xlsx formatında aynı belge içerisinde 3 sayfa olarak export etmek istiyorum girddeki satırları tektet döngü ile yapmıştım ancak çok uzun sürüyor .
Bana daha hızlı olan ExportGridToExcel(SaveDialog1.FileName,cxgrid1,true,true,true,'xlss'); gibi yöntem ile hızlıca atmak istiyorum. Bu kodda açık olan belgeye ekleme yapılabilir mi ? yada export ederken daha önce var olan bir excel belgesi içerisine yeni sayfa olarak eklenebilirmi ?
teşekkürler
diseqc
Üye
Mesajlar: 44
Kayıt: 21 May 2009 04:03

Re: delphi aynı excel belgesi içine sayfa sayfa export

Mesaj gönderen diseqc »

Tekrar merhaba;
Forumda dolaşırken aşağıdaki konuyu buldum tam istediğim noktaya değinmiş
viewtopic.php?t=20753

Kod: Tümünü seç

/ EDIT // Açtığın başlıkta bir başka Excel dosyasına demişsin onu görmemişim.

Her iki excel dosyası bağımsız WorkBook olarak açılırlar bunu bilirsin. Onların isimlerini veya indexlerini belirterek adresleme yapılır. Aynı kopyalama komutu aşağıdaki gibi işler...

Var
  Excel : OleVariant;
begin
  Excel := GetActiveOleObject('Excel.Application');
  Excel.WorkBooks['Kitap1'].Sheets['Sayfa1'].Copy(After:=Excel.WorkBooks['Kitap2'].Sheets['Sayfa1']);
  Excel := UnAssigned;
end;

kodu projeye uyguladım inavlit variant operation ve bir çok hata aldım acaba belgeler xlsx formatında olması mı sorun oldu yada kodu çalıştırmak için farklı kodlara mı ihityaç var ... teşekkürler
diseqc
Üye
Mesajlar: 44
Kayıt: 21 May 2009 04:03

Re: delphi aynı excel belgesi içine sayfa sayfa export

Mesaj gönderen diseqc »

Excelin yardımlarınada var ama kodlar vb ye göre bu kodları delphiye nasıl uyarlayablirim.

Kod: Tümünü seç

Excel VBA to copy sheet to another workbook

Depending on where you want to insert the copied sheet, use one of the following macros.
Copy sheet to the beginning of another workbook

This macro copies the active sheet before all other worksheets in the destination file, Book1 in this example. To copy to another file, replace "Book1.xlsx" with the full name of your target workbook.

?
Public Sub CopySheetToBeginningAnotherWorkbook()
    activeSheet.Copy Before:=Workbooks("Book1.xlsx").Sheets(1)
End Sub

Copy sheet to the end of another workbook

This piece of code duplicates the active worksheet and places the copy to the end of Book1. Again, please remember to replace "Book1.xlsx" with the name of your destination workbook.

?
Public Sub CopySheetToEndAnotherWorkbook()
    activeSheet.Copy After:=Workbooks("Book1.xlsx").Sheets(Workbooks("Book1.xlsx").Worksheets.Count)
End Sub



Excel VBA to copy sheet from another workbook without opening

This macro enables you to copy a worksheet from another Excel file without opening it. The copied sheet will be inserted at the end of the current workbook.

Just remember to make a couple of replacements in the code:

    C:\Users\XXX\Documents\Target_Book.xlsx should be changed to the actual path and name of the workbook from which you want to copy a sheet.
    Sheet1 should be replaced with the name of the sheet you want to copy.


?
Public Sub CopySheetFromClosedWorkbook()
    Dim sourceBook As Workbook
    Application.ScreenUpdating = False
    Set sourceBook = Workbooks.Open("C:\Users\XXX\Documents\Target_Book.xlsx")
    sourceBook.Sheets("Sheet1").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    sourceBook.Close
    Application.ScreenUpdating = True
End Sub



https://www.ablebits.com/office-addins- ... excel-vba/
diseqc
Üye
Mesajlar: 44
Kayıt: 21 May 2009 04:03

Re: delphi aynı excel belgesi içine sayfa sayfa export

Mesaj gönderen diseqc »

Sanırım konu hakkında kimsenin fikri yok.
Devexpressin sitesinde C# için bu konuya örnek vermiş ama bu kodu delphiye uyarlayamadım.

Kod: Tümünü seç

CompositeLink complink = new CompositeLink(new PrintingSystem());  
PrintableComponentLink link = new PrintableComponentLink();  
link.Component = gridControl1;  
complink.Links.Add(link);  
//...  
complink.CreatePageForEachLink();  
complink.ExportToXlsx("test.xlsx", new XlsxExportOptions() { ExportMode = XlsxExportMode.SingleFilePageByPage });
https://supportcenter.devexpress.com/Ti ... excel-file
3ddark
Üye
Mesajlar: 89
Kayıt: 14 Eyl 2010 10:55
Konum: İstanbul

Re: delphi aynı excel belgesi içine sayfa sayfa export

Mesaj gönderen 3ddark »

For ile yapabilirsiniz ve çok uzun sürmez. Verileri nereden çekiyorsunuz. BeginUpdate EndUpdate komutlarını araştırın.
PostgreSQL - Delphi - Linux :!:
diseqc
Üye
Mesajlar: 44
Kayıt: 21 May 2009 04:03

Re: delphi aynı excel belgesi içine sayfa sayfa export

Mesaj gönderen diseqc »

3ddark yazdı: 11 Nis 2020 09:24 For ile yapabilirsiniz ve çok uzun sürmez. Verileri nereden çekiyorsunuz. BeginUpdate EndUpdate komutlarını araştırın.
For döngüsü ile exele hücre hücre daha önce yazdığım bir proje var gridi tek tek okuyup yazdığı için griddeki sayfa sayısına göre uzun sürüyor. BAzı gird de 2000 satır olabiliyor. Veriler SQL ile query den çekilip cxgrid de gösteriliyor.
3ddark
Üye
Mesajlar: 89
Kayıt: 14 Eyl 2010 10:55
Konum: İstanbul

Re: delphi aynı excel belgesi içine sayfa sayfa export

Mesaj gönderen 3ddark »

2000 çok büyük bir sayı değil dediğim gibi BeginUpdate EndUpdate komutlarını araştırın.
PostgreSQL - Delphi - Linux :!:
diseqc
Üye
Mesajlar: 44
Kayıt: 21 May 2009 04:03

Re: delphi aynı excel belgesi içine sayfa sayfa export

Mesaj gönderen diseqc »

3ddark yazdı: 11 Nis 2020 09:58 2000 çok büyük bir sayı değil dediğim gibi BeginUpdate EndUpdate komutlarını araştırın.
Merhaba önerinizi uygulamayı düşünüyorum kodlarım hazır zaten ama bu begin update ile ilgili webde çok açıklayıcı bir makale yada döküman bulamadım nedir bu beginupdate in faydası ?? Yaptığı iş nedir??;
Bazı kodlarda direk blok olarak kullanılmış
Beginupdate
.....
Endupdate gibi bazı kodlarda nesenin içerisinde kullanılmış
Combobox.item.beginupdate
......
Combobax.item.endupdate gibi
Benim hangi yöntenmi kullanmam daha doğru olur

Tabi beginupdate mantığını öğretmekte isterim nerelerde kullanmak lazım belkide bir çok farklı yerde kullanırız birde dezavantajı varmıdır tşk
Cevapla