xlrd sorunu.

69 views
Skip to first unread message

Timucin Kizilay

unread,
Dec 24, 2012, 10:39:54 AM12/24/12
to python-...@googlegroups.com
 
xlrd kütüphanesi ile excel dosyalarını okuyup içindeki verileri veritabanına aktarıyorum.
Gelen bir kaç excel dosyasında şu hatayı aldım:

XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\xef\xbb\xbf<?xml'

excel dosyasını gedit ile açtığımda içeriğinin xml olduğunu gördüm.
dosyanın ilk bir kaç satırı aşağıda:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>XXXX</Author>
<LastAuthor>XXXXXXXXXXX</LastAuthor>
<Created>2012-12-21T14:30:41Z</Created>
<Version>14.00</Version>
</DocumentProperties>

---------------------------

Bu dosyaları bir web uygulaması oluşturuyor ve web uygulamasından indirilen .xls uzantılı dosyayı libreoffice ile açınca sorunsuz açılıyor. Windows makinalarda msoffice ile de düzgün açılıyor ama python ile açıp işlemek için bir library bulamadım. xlrd ise ofis2010 dosyalarını bile tanımasına rağmen bu tip dosyaları açamıyor. Bu tip dosyalarla karşılaşanlar python ile işlemek için ne kullanıyorlar merak ettim.


Deniz Kurucu

unread,
Dec 24, 2012, 12:16:35 PM12/24/12
to python-...@googlegroups.com
Selam,

http://packages.python.org/openpyxl/ denediniz mi ? Bazı dosyalar xlsx formatında oluyor, xlrd de onları açamıyor.

Kolay gelsin.

2012/12/24 Timucin Kizilay <timucin...@gmail.com>

Timucin Kizilay

unread,
Dec 25, 2012, 4:18:56 AM12/25/12
to python-...@googlegroups.com
Selam,

openpyxl de denedim, sonu� ayn�.
xlrd son versiyonu .xlsx uzant�l� office 2010 dosyalar�n� da a�abiliyor. Benim sorunum gelen .xls dosyas�n�n asl�nda xls dosyas� de�il xml dosyas� olmas�. Bir �ekilde openoffice ve msoffice bu dosyalar� normal xls dosyas� gibi a��yor ama xlrd ile a��lm�yor.

Belki bu tipte dosyalar� a�an ba�ka bir library vard�r diye ara�t�r�yorum, yoksa xml parse edip i�inden verileri �ekmekle u�ra�mak zorunda kalaca��m. �ok u�ra�t�rmayan bir xml parser library ne tavsiye edersiniz?



On 24-12-2012 19:16, Deniz Kurucu wrote:
Selam,

http://packages.python.org/openpyxl/�denediniz mi ? Baz� dosyalar xlsx format�nda oluyor, xlrd de onlar� a�am�yor.

Kolay gelsin.

2012/12/24 Timucin Kizilay <timucin...@gmail.com>
�
xlrd k�t�phanesi ile excel dosyalar�n� okuyup i�indeki verileri veritaban�na aktar�yorum.
Gelen bir ka� excel dosyas�nda �u hatay� ald�m:


XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\xef\xbb\xbf<?xml'

excel dosyas�n� gedit ile a�t���mda i�eri�inin xml oldu�unu g�rd�m.
dosyan�n ilk bir ka� sat�r� a�a��da:


<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>XXXX</Author>
<LastAuthor>XXXXXXXXXXX</LastAuthor>
<Created>2012-12-21T14:30:41Z</Created>
<Version>14.00</Version>
</DocumentProperties>

---------------------------

Bu dosyalar� bir web uygulamas� olu�turuyor ve web uygulamas�ndan indirilen .xls uzant�l� dosyay� libreoffice ile a��nca sorunsuz a��l�yor. Windows makinalarda msoffice ile de d�zg�n a��l�yor ama python ile a��p i�lemek i�in bir library bulamad�m. xlrd ise ofis2010 dosyalar�n� bile tan�mas�na ra�men bu tip dosyalar� a�am�yor. Bu tip dosyalarla kar��la�anlar python ile i�lemek i�in ne kullan�yorlar merak ettim.




Deniz Kurucu

unread,
Dec 25, 2012, 4:43:57 AM12/25/12
to python-...@googlegroups.com


2012/12/25 Timucin Kizilay <timucin...@gmail.com>
Selam,

openpyxl de denedim, sonuç aynı.
xlrd son versiyonu .xlsx uzantılı office 2010 dosyalarını da açabiliyor. Benim sorunum gelen .xls dosyasının aslında xls dosyası değil xml dosyası olması. Bir şekilde openoffice ve msoffice bu dosyaları normal xls dosyası gibi açıyor ama xlrd ile açılmıyor.


Zaten xls alt tarafta xml kullanıyor bildiğim kadarıyla. Açmaya çalıştığınız dosyadan bir örnek gönderirseniz belki daha iyi anlarız durumu.
 
Belki bu tipte dosyaları açan başka bir library vardır diye araştırıyorum, yoksa xml parse edip içinden verileri çekmekle uğraşmak zorunda kalacağım. çok uğraştırmayan bir xml parser library ne tavsiye edersiniz?


Ben lxml kullanıyorum, ama biraz xpath bilmek lazım.

Kolay gelsin.
 



On 24-12-2012 19:16, Deniz Kurucu wrote:
Selam,

http://packages.python.org/openpyxl/ denediniz mi ? Bazı dosyalar xlsx formatında oluyor, xlrd de onları açamıyor.

Kolay gelsin.

2012/12/24 Timucin Kizilay <timucin...@gmail.com>
 

xlrd kütüphanesi ile excel dosyalarını okuyup içindeki verileri veritabanına aktarıyorum.
Gelen bir kaç excel dosyasında şu hatayı aldım:

XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\xef\xbb\xbf<?xml'

excel dosyasını gedit ile açtığımda içeriğinin xml olduğunu gördüm.
dosyanın ilk bir kaç satırı aşağıda:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>XXXX</Author>
<LastAuthor>XXXXXXXXXXX</LastAuthor>
<Created>2012-12-21T14:30:41Z</Created>
<Version>14.00</Version>
</DocumentProperties>

---------------------------

Mustafa

unread,
Dec 25, 2012, 4:50:56 AM12/25/12
to python-...@googlegroups.com
Gordugum kadariyla, dokumanin basinda BOM (http://en.wikipedia.org/wiki/Byte_order_mark) karakterleri var ve da parser'in calismasini engelliyor. Yani yukaridaki hatada '\xef\xbb\xbf<?xml' olarak gozuken yer aslinda <?xml olarak baslamadigi icin parse edemiyorsun. Herhangi bir hex editorle acarsan o kotu karakterleri gorebilirsin :)

O karakterleri replace veya ignore etmek cozum olabilir.


2012/12/25 Deniz Kurucu <makk...@gmail.com>
Reply all
Reply to author
Forward
0 new messages