Delphi i le exel dosyası okumak ve yeni exel dosyası oluşturmak

Başlatan z, 01 Ekim 2019, 09:53:02

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mufitsozen

Alıntı yapılan: z - 02 Ekim 2019, 14:04:34Kisacasi;

export isleminde csv vs secebiliyoruz bana bunun importu lazim.


Excel okurken dogrudan csv yukler
import'a gerek yok.

.csv dosyalari acmak icin default excel'in set edilmesi yeterli. Yada file->open deyip dosyayi .csv ekiyle secmek yeterli
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Epsilon

Birincisi excel cvs yi zaten açar.Adamlar zaten bu tür işler için macro kaydet seçeneğini yıllar önce eklediler yani sen bir kere işi ekrandan  kaydedersin excel binlerce satırda o işi otomatik yapar.
Ben size yardımcı olmaya çalışıyorum

power20

not defteri ile deneme.csv dosyası yapalım.
içeriği şöyle olsun
a;b;c;d
1;2;3;4
a b c d   bir  hücrede  1 harf olacak şekilde  ( ilk satır)
1 2 3 4     ikinci satır

görüldüğü gibi csv yapmak çok kolay. Bunu  import / Export edebilecek program yazmak da öyledir.
Excelde gayet güzel açılıyor.
illa ki xls gerekli değilse program ile csv oluşturmak çok kolay olur. Hem Excel yüklü olmasa da çalışır

z

Exelin csv actigini bilmiyordum ve bugune kadar kendime eziyet ediyormusum o zaman.

CSV ile ilgili bir sorunumdan da bahsedeyim.

Tab ayiraci ile exel datalari export edip Delphi programim ile okuyorum.

Fakat hucrelerden birisinde uzunca bir veri varsa exel bir sonraki hucre ile bu hucredeki veriyi tab ile ayirmiyor bu da bazi hucrelerdeki verileri yanlis okumama neden oluyor.

Bu sorunun cozumu var mi?

Mesela

Ahmet Mehmet Veli
asdghasghdghasdgh Ali Can verilerini export ettigimde

Ahmet(TAB)Mehmet(TAB)Veli
asdghasghdghasdghAli(TAB)Can

gibi durumlarla karsilasabiliyorum.

Bu hatayla karsilasmamin sebebi nedir?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mufitsozen

tab yerine virgul kullan.
text icinde virgul varsa text'i tirnak icine koy.

Bu arada csv, "comma seperated values" kisaltmasi

Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

engerex

CSV işinizi görüyorsa
Excell de istediğiniz içeriği oluşturun. Bunu CSV olarak kaydedin. Not defterinde açın ve Delphi'de bu yapıyı taklit edin. Hücre Kaynak : https://en.wikipedia.org/wiki/Comma-separated_values

İçerik aşağıdakine benzer olacaktır.

Alıntı yapılan: undefinedYear;Make;Model;Description;Price
1997;Ford;E350;Extended Edition;4799,50
1999;Chevy;Venture;abc;123,46



Ekleme: çok uzun hücreleri iki tırnak arasına yazın
Extended Edition yerine "Extended Edition" gibi

mufitsozen

Alıntı yapılan: mufitsozen - 02 Ekim 2019, 15:50:19tab yerine virgul kullan.
text icinde virgul varsa text'i tirnak icine koy.

Bu arada csv, "comma seperated values" kisaltmasi

-- How do I change the separator in a csv file?

- Change the separator in all .csv text files

- In Microsoft Windows, click the Start button, and then click Control Panel.

- Open the dialog box for changing Regional and Language settings.

- Type a new separator in the List separator box.

- Click OK twice.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

z

csv secenekleri arasinda zaten bir kac tane ayirac secenegi var. Tab, space gibi.

Zamaninda birileri exel verilerini olusturmuslar. (tek tek uzun veri iceren hucreleri bulup editlemek yorucu olur) Dolayisi ile mevcut exel doslarindaki textleri elle tirnak icine almam soz konusu olamaz.

Ayirac secenekleri arasinda yer alan space ve virgul karakterini ayirac olarak kullanamam, cunku bazi hucrelerde uzun textler icinde virgule kullanilmis. Tab isime geldi. ; de olabilir belki. Ama sorunun ayirac karakterinin ne oldugu ile ilgisi yok bence. Uzun text iceren hucrelerde sanki exelin bir export hatasi var gibime geldi.

Evde exel olmadigini icin yarin is yerinde tekrar denerim.

Neyse bu tip hatalari zaten Delphi programim farkediyor ve uyariyor ben de elle duzeltme yapiyorum.

Konuyu actigima cok sevindim.

Cunku exelin csv formatli verileri okuyabildiginden hic haberim yoktu.

Herkese tesekkurler.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

engerex

Verilerin içerisinde virgül, noktalı virgül olduğundan yakınıyorsanız tırnak mevzusu zaten bunu çözüyor.

Örnek : hücrede bolca virgül, noktalı virgül var. Hatta tırnak kullanmak dahi mümkün.

Year;Make;Model;Description;Price
1997;Ford;E350;";;;,,""Extended"";,; Edition;,,,";4799,50
1999;Chevy;Venture;abc;123,46