Exceldeki verileri veritabanına yazma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Exceldeki verileri veritabanına yazma
Excelde bulunan verileri delphi ile veritabanına nasıl yazabilirim.bu konu ile ilgili yardım ederseniz sevinirim.şimdiden teşekkürler
Yeterli Gelmedi
İlginiz için tşkr ederim fakat somut olarak koda ihtiyacım var.
Merhaba,
somut kod derken; bu senin excel dosyana ve veritabanına göre değişir. ancak şöyle birşey olacak :
Kolay gelsin.
somut kod derken; bu senin excel dosyana ve veritabanına göre değişir. ancak şöyle birşey olacak :
Kod: Tümünü seç
//.csv'yi normal text dosya gibi işleyebilirsin.
//dosya sonuna gelene kadar, csv'den bir satır oku
Table1.Append;
Table1.FieldByName('Alan1').AsString := Copy(satir, 1, Pos(satir, ';')); // ;'e kadar olan kısım alan1
Table1.FieldByName('Alan2').AsString := Copy(.....);
...
Table1.Post;
//csv'yi CloseFile kapat
Uses kısmına ComObj yi eklemeyi unutma.
Bu Kodu ben Kullanıyorum XLS uzantılı Excel Dosyasından veri çeker.
Birde Arkadaşım Bu konuyu daha önce çok tartışmıştık sana tafsiyem vakit kazanmak istiyorsan formda arama yapman olacaktır.
Kolay Gelsin.
Kod: Tümünü seç
var
book:variant;
excel,sheet:variant;
satir, sutun:integer;
str:string;
begin
excel := createOleObject('Excel.application');
OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls';
if opendialog1.Execute then
begin
book:= Excel.WorkBooks.Open(OpenDialog1.FileName);
try
Screen.Cursor := crHourGlass;
ProgressBar1.Visible := True;
label1.Visible := True;
sheet := book.worksheets[1];
for satir:=2 to 2500 do
begin
str := sheet.cells[satir, 1];
// iF (str <> '') then
if (str <> '') And (str <> '') then
begin
Update;
Label1.Caption := str;
ProgressBar1.Position := satir;
AdoDataset1.Append;
for sutun:=1 to 11 do
AdoDataset1.Fields[sutun-1].AsString :=sheet.cells[satir, sutun];
AdoDataset1.Post;
end;
end;
Excel.quit;
excel:=Unassigned;
finally
Screen.Cursor := crDefault;
ProgressBar1.Visible := False;
Label1.Visible := False;
end;
end;
End;
Birde Arkadaşım Bu konuyu daha önce çok tartışmıştık sana tafsiyem vakit kazanmak istiyorsan formda arama yapman olacaktır.
Kolay Gelsin.
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
procedure TForm1.Button2Click(Sender: TObject);
var
book:variant;
excel,sheet:variant;
satir, sutun:integer;
str:string;
begin
excel := createOleObject('Excel.application');
OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls';
if opendialog1.Execute then
begin
book:= Excel.WorkBooks.Open(OpenDialog1.FileName);
try
Screen.Cursor := crHourGlass;
ProgressBar1.Visible := True;
label1.Visible := True;
sheet := book.worksheets[1];
for satir:=2 to 2500 do
begin
str := sheet.cells[satir, 1];
// iF (str <> '') then
if (str <> '') And (str <> '') then
begin
Update;
Label1.Caption := str;
ProgressBar1.Position := satir;
table1.Append;
for sutun:=1 to 11 do
table1.Fields[sutun-1].AsString :=sheet.cells[satir, sutun];
table1.Post;
end;
end;
Excel.quit;
excel:=Unassigned;
finally
Screen.Cursor := crDefault;
ProgressBar1.Visible := False;
Label1.Visible := False;
end;
end;
olarak yani table1 de tanımladıgım veritabına yazmak istedim ve sizin adodataset1 olanları değiştirdim fakat hata veriyor.Progressbar ,label ve OpenDialog1 ekledim.aktarımını yapacagım dosyayı secıyorum sorun yok ama ac dedıgımde "project1.exe raised exception class ElistError with message 'list index out of bounds (2)' progress stopped.use step run to continue" şeklinde bir hata verdi.default database olan DBDEMOS ve tree.db şeklinde oluşturdugum veritabanını kullanıyorum.alians ile baglı degılım .Yardımınız için teşekkür ederim
var
book:variant;
excel,sheet:variant;
satir, sutun:integer;
str:string;
begin
excel := createOleObject('Excel.application');
OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls';
if opendialog1.Execute then
begin
book:= Excel.WorkBooks.Open(OpenDialog1.FileName);
try
Screen.Cursor := crHourGlass;
ProgressBar1.Visible := True;
label1.Visible := True;
sheet := book.worksheets[1];
for satir:=2 to 2500 do
begin
str := sheet.cells[satir, 1];
// iF (str <> '') then
if (str <> '') And (str <> '') then
begin
Update;
Label1.Caption := str;
ProgressBar1.Position := satir;
table1.Append;
for sutun:=1 to 11 do
table1.Fields[sutun-1].AsString :=sheet.cells[satir, sutun];
table1.Post;
end;
end;
Excel.quit;
excel:=Unassigned;
finally
Screen.Cursor := crDefault;
ProgressBar1.Visible := False;
Label1.Visible := False;
end;
end;
olarak yani table1 de tanımladıgım veritabına yazmak istedim ve sizin adodataset1 olanları değiştirdim fakat hata veriyor.Progressbar ,label ve OpenDialog1 ekledim.aktarımını yapacagım dosyayı secıyorum sorun yok ama ac dedıgımde "project1.exe raised exception class ElistError with message 'list index out of bounds (2)' progress stopped.use step run to continue" şeklinde bir hata verdi.default database olan DBDEMOS ve tree.db şeklinde oluşturdugum veritabanını kullanıyorum.alians ile baglı degılım .Yardımınız için teşekkür ederim
Büyük bir ihtimalle uses kısmına ComObj yi eklemeyi unutmuş olabilirsin.
uses ComObj; //Bu satırı ekle implementation satırının altına
Birde unutmadan EXCEL deki ve Tablondaki Sutun sayılarının aynı olmasına dikkat et.
Kolay gelsin.
uses ComObj; //Bu satırı ekle implementation satırının altına
Birde unutmadan EXCEL deki ve Tablondaki Sutun sayılarının aynı olmasına dikkat et.
Kolay gelsin.
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Arkadaşım senin için değiştirdim test ettim çalışıyor. Umarım işini görür kodu aynen kopyala yapiştır yapıyorum sende yaparsın.
Bu Program 11 sütünlü 2500 satırlı bir excel dosyasından veri alır ve aktardığı tabloda 11 sutunlu olması lazımdır. Ama hesaplama yaparken şurda karıştırma excel de sutun sayıları 1 den başlar 1..11 tablolarda ise 0 dan başlar 0..10 eğer problemler devam ederse. Programını ve tablonu huseyin@durmus.net adresine postala.
Bir de tablonun alanlarını metin olarak tanımlamayı unutma çünkü ben bu şekilde yaptım. Diğer türlü problem olabilir.
Kolay Gelsin.
Kod: Tümünü seç
uses ComObj;
procedure TForm1.Button2Click(Sender: TObject);
var
book:variant;
excel,sheet:variant;
satir, sutun:integer;
str:string;
begin
excel := createOleObject('Excel.application');
OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls';
if opendialog1.Execute then
begin
book:= Excel.WorkBooks.Open(OpenDialog1.FileName);
try
Screen.Cursor := crHourGlass;
sheet := book.worksheets[1];
for satir:=1 to 2500 do
begin
str := sheet.cells[satir, 1];
if (str <> '') then
begin
Update;
Table1.Append;
for sutun:=1 to 11 do
Table1.Fields[sutun-1].AsString :=sheet.cells[satir, sutun];
Table1.Post;
end;
end;
Excel.quit;
excel:=Unassigned;
finally
Screen.Cursor := crDefault;
end;
end;
End;
procedure TForm1.FormShow(Sender: TObject);
begin
Table1.Open;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Table1.Close;
end;
Bir de tablonun alanlarını metin olarak tanımlamayı unutma çünkü ben bu şekilde yaptım. Diğer türlü problem olabilir.
Kolay Gelsin.
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
teşekkür ederim
Arkadasım teşekkür ederim ilgin içi çalıştı.ne demişler bana bir harf öretenin kölesi olurum.günümüzde bu yok fakat gün gelir benimde umarım bir yardımım dokunur
Rica ederim.Önemli değil yardımcı olabildiysem ne mutlu bana iyi çalışmalar.
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
mrb,
bende excelden tabloma veri aktarmak istiyorum. ve yukarıdaki kodlardan yararlanarak bişiler yapmaya çalıştım ama projeyi çalıştırıp butona tıkladığım zaman aşağıdaki hatayı alıyorum:
Project AKTIF.exe raised exception class EDatabaseError with message ''AD' is not a valid integer value for field 'ALICI_PK''.
ALICIDATA isimli datasete post etmek istiyorum. bu tablo aynı zamanda başka tablolarla master detay olarak bağlantılı.ALICI_PK alanı primary key olan otomatik artan alan.Acaba exceldeki sütunla tablomdaki sütun eşleştirmesindemi bi hata var dicem ama öyle olsa bile nasıl çözceğimi bilemedim
kolay gelsin iyi çalışmalar..
veritabanı firebird, delphi 7 kullanıyorum.
bende excelden tabloma veri aktarmak istiyorum. ve yukarıdaki kodlardan yararlanarak bişiler yapmaya çalıştım ama projeyi çalıştırıp butona tıkladığım zaman aşağıdaki hatayı alıyorum:
Project AKTIF.exe raised exception class EDatabaseError with message ''AD' is not a valid integer value for field 'ALICI_PK''.
ALICIDATA isimli datasete post etmek istiyorum. bu tablo aynı zamanda başka tablolarla master detay olarak bağlantılı.ALICI_PK alanı primary key olan otomatik artan alan.Acaba exceldeki sütunla tablomdaki sütun eşleştirmesindemi bi hata var dicem ama öyle olsa bile nasıl çözceğimi bilemedim
kolay gelsin iyi çalışmalar..
veritabanı firebird, delphi 7 kullanıyorum.
Bilginin temelini sağlam at depremde zarar görmesin
ewt sorun bencede öle ama kodları göndersem nereyi değiştirmem gerektiğini bulabilirmiyiz?
Kod: Tümünü seç
procedure Taliciform.Button5Click(Sender: TObject);
var
book:variant;
excel,sheet:variant;
satir, sutun:integer;
str:string;
begin
excel := createOleObject('Excel.application');
OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls';
if opendialog1.Execute then
begin
book:= Excel.WorkBooks.Open(OpenDialog1.FileName);
try
Screen.Cursor := crHourGlass;
sheet := book.worksheets[1];
for satir:=1 to 2500 do
begin
str := sheet.cells[satir, 1];
if (str <> '') then
begin
Update;
dm.ALICIDATA.Append;
for sutun:=1 to 2 do
dm.ALICIDATA.Fields[sutun-1].AsString :=sheet.cells[satir, sutun];
dm.ALICIDATA.Post;
end;
end;
Excel.quit;
excel:=Unassigned;
finally
Screen.Cursor := crDefault;
end;
end;
end;
Bilginin temelini sağlam at depremde zarar görmesin
o sorunu çözdüm
yerine
yazdım, düzeldi.
tşkler..
Kod: Tümünü seç
dm.ALICIDATA.Fields[sutun-1].AsString :=sheet.cells[satir, sutun];
Kod: Tümünü seç
dm.ALICIDATA.Fields[sutun].AsString :=sheet.cells[satir, sutun];
tşkler..
Bilginin temelini sağlam at depremde zarar görmesin