การ xlrd โมดูล
งูหลามโมดูลสำหรับการสกัดข้อมูลจากไฟล์ MS Excel สเปรดชีต™ .
รุ่นการ -- กุมภาพันธ์ / มีนาคม 2012
ข้อมูลทั่วไป
ขอบคุณ
พัฒนาโมดูลนี้จะไม่ได้รับเป็นไปได้ โดยไม่มีเอกสาร " OpenOffice org . มันเอกสารของ Microsoft Excel รูปแบบไฟล์ " ( " อู Documents " สั้น ๆ ) รุ่นล่าสุดพร้อมใช้งานจากโปรแกรมองค์กรในรูปแบบ PDF และรูปแบบ odt . ส่วนเล็ก ๆของอู Docs จะทำซ้ำในเอกสารนี้ การศึกษาของโอเอกสารแนะนำสำหรับผู้ที่ต้องการความเข้าใจที่ลึกของไฟล์ Excel รูปแบบกว่า xlrd เอกสารสามารถให้
backporting เพื่อ Python 2.1 ได้รับทุนสนับสนุนบางส่วนจาก journyx - ผู้ให้บริการและโซลูชั่นของ timesheet โครงการบัญชี
การจัดรูปแบบข้อมูลในรุ่น 0.6.1 ได้รับการสนับสนุนโดย simplistix จำกัด
โมดูลนี้แสดง Unicode สตริงข้อความทั้งหมดเป็นงูหลาม Unicode ของวัตถุ จาก Excel 97 เป็นต้นไป ข้อความใน Excel สเปรดชีตถูกเก็บไว้เป็น Unicode . ไฟล์เก่า ( Excel 95 และก่อนหน้านี้ ) อย่าให้สายใน Unicode ; โคดเพจบันทึกให้โคดเพจหมายเลข ( ตัวอย่างเช่น1 , 252 ) ซึ่งถูกใช้โดย xlrd มาเข้ารหัส ( สำหรับตัวอย่างเดียวกัน : " cp1252 " ) ซึ่งจะใช้ในการแปลเป็น Unicode .
ถ้าบันทึกโคดเพจหายไป ( เป็นไปได้ถ้าแฟ้มถูกสร้างขึ้นโดยซอฟต์แวร์ของบุคคลที่สาม ) , xlrd ถือว่าการเข้ารหัสเป็น ASCII , และเก็บไป ถ้าจริงการเข้ารหัสไม่ใช่รหัสแอสกีเป็น unicodedecodeerror ข้อยกเว้น จะเพิ่มขึ้น และคุณจะต้องตรวจสอบการเข้ารหัสด้วยตนเอง และบอก xlrd :
หนังสือ = xlrd . open_workbook ( . . . . . encoding_override = " cp1252 " )
ถ้าบันทึกโคดเพจที่มีอยู่ แต่ไม่ถูกต้อง ( ตัวอย่างเช่น โคดเพจหมายเลข 1251 สายจริง แต่สร้าง koi8_r ) มันสามารถถูกแทนที่ด้วยกลไกเดียวกัน จัด runxlrd .มีอาร์กิวเมนต์บรรทัดคำสั่ง pw ที่สอดคล้องกัน , ซึ่งอาจจะใช้สำหรับทดลอง :
runxlrd.py - E koi8_r 3rows myfile . xls
ตอนแรกมองหาการเข้ารหัส ( " ชื่อ " ตัวแปลงสัญญาณ ) เป็นงูหลามเอกสาร วัน
ใน Excel สเปรดชีต
ในความเป็นจริง ไม่มีสิ่งดังกล่าว สิ่งที่คุณต้องเป็นลอยจุด ตัวเลข และ ศรัทธา ความหวัง มีปัญหาหลายกับ Excel วันที่ :
( 1 ) วันไม่ได้เก็บไว้เป็นข้อมูลชนิดแยกต่างหาก พวกเขาจะถูกเก็บไว้เป็นลอยจุดตัวเลขและคุณจะต้องพึ่งพา ( ) " รูปแบบ " หมายเลขที่ใช้กับพวกเขาใน Excel และ / หรือ ( ข ) ทราบว่าเซลล์จะต้องมีวันที่ใน โมดูลนี้จะช่วยให้มี ( ) โดยการตรวจสอบรูปแบบที่ได้รับนำไปใช้กับแต่ละเบอร์ ถ้ามันปรากฏเป็นวันที่รูปแบบเซลล์แบ่งเป็น วันที่มากกว่าตัวเลข ความคิดเห็นเกี่ยวกับคุณลักษณะนี้โดยเฉพาะอย่างยิ่งจากย่านที่ไม่พูดภาษาอังกฤษ จะได้รับการชื่นชม
( 2 ) Excel สำหรับ Windows ร้านค้าวันที่เริ่มต้นเป็นจำนวนวัน ( หรือส่วนของมัน ) ตั้งแต่ 1899-12-31t00:00:00 . Excel สำหรับ Macintosh ใช้เริ่มต้นวันที่เริ่มต้นของ 1904-01-01t00:00:00 .วันที่ของระบบที่สามารถเปลี่ยนแปลงได้ใน Excel บนพื้นฐานต่อสมุดงาน ( ตัวอย่าง : Tools - > Options - > การคำนวณ ติ๊ก " 1904 วันที่ระบบ " กล่อง ) ของหลักสูตรนี้เป็นความคิดที่ไม่ดี หากมีอยู่แล้ว ในช่องสมุดงาน ไม่มีเหตุผลที่ดีที่จะเปลี่ยนมัน ถ้าไม่มี ในช่องสมุดงาน ซึ่งระบบอาจจะใช้บันทึกในสมุดงานสมุดส่งจาก Windows ใน Macintosh ( หรือในทางกลับกัน ) จะทำงานอย่างถูกต้องกับโฮส Excel เมื่อใช้โมดูลของ xldate_as_tuple ฟังก์ชันแปลงตัวเลขจากสมุดงาน คุณต้องใช้ datemode คุณลักษณะของวัตถุ หนังสือ ถ้าคุณเดาว่าหรือตัดสินขึ้นอยู่กับที่คุณเชื่อ สมุดงานที่ถูกสร้างขึ้น , คุณเสี่ยงต่อการถูกทึ่ม วันไม่ทำงาน
อ้างอิง : http://support.microsoft.com/default.aspx ? สคิด = KB ; en-us ; q180162
( 3 ) ระบบอาจใช้ Excel การใช้งานของ Windows เริ่มต้นทำงานในสถานที่ที่ไม่ถูกต้องที่ 1900 1900 เป็นปีอธิกสุรทิน มันแปลความหมายเลข 60 เป็น 1900-02-29 ซึ่งไม่อาจใช้ได้ จึงมีจำนวนน้อยกว่าแต่ก็ยังไม่ชัดเจน ตัวอย่าง : 59 ผล 1900-02-28 เข้าโดยตรงหรือจะเป็น 1900-03-01 ลบ 2 วัน ? ใช้ OpenOffice.org Calc โปรแกรม " แก้ไข " ปัญหา Microsoft ; เข้า 1900-02-27 สาเหตุจำนวน 59 ที่จะเก็บไว้ บันทึกเป็นแฟ้ม xls แล้วเปิดแฟ้ม Excel -- คุณจะเห็น 1900-02-28 แสดง
อ้างอิง : http://support.microsoft.com/default.aspx ? สคิด = KB ; และเรา 214326
;( 4 ) ระบบอาจใช้ Macintosh เริ่มต้นนับ 1904-01-02 1904 เป็นวันที่ 1 และวันที่ 1904-01-01 เป็นศูนย์ ดังนั้นจำนวนใด ๆเช่น ( 0.0 < = หมายเลข < 1.0 ) ไม่ชัดเจน เป็น 0.625 เวลาของวัน ( 15:00:00 ) , อิสระของปฏิทินหรือมันควรจะถูกตีความเป็นทันทีในวันที่เฉพาะเจาะจง ( 1904-01-01t15:00:00 )การ xldate_ * ฟังก์ชั่นในโมดูลนี้ใช้ดูว่า หมายเลขดังกล่าวเป็นปฏิทินที่อิสระ เวลาของวัน ( เช่นงูหลามเป็น datetime.time ประเภท ) สำหรับวันที่ระบบ ซึ่งสอดคล้องกับเอกสารของ Microsoft ล่าสุด ( ตัวอย่างเช่น แฟ้มวิธีใช้สำหรับ Excel 2002 ที่บอกว่าวันแรกใน 1904 วันที่ระบบ
1904-01-02 )( 5 ) การใช้ Excel วันที่ ( ) ฟังก์ชันอาจจะออกจากวันที่แปลกในสเปรดชีต ส่วนไฟล์ช่วย ในส่วนของระบบ 1900 วันที่ : " ถ้าปี ระหว่าง 0 ( ศูนย์ ) และ 1899 ( รวม ) , Excel เพิ่มมูลค่า 1900 คำนวณเป็นปี ตัวอย่างเช่นวันที่ ( 108,1,2 ) กลับวันที่ 2 มกราคม 2008 ( 1900 108 ) " กลไกนี้ป้องกันกึ่งเฉพาะข้อคิดถึง 99 เท่านั้น และใน pre-y2k-awareness ยุค หมายความว่าวันที่ ( 1899 , 12 , 31 ) จะแปลเป็น 3799-12-31
สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบสำหรับฟังก์ชัน xldate_ * .
ชื่ออ้างอิงค่าคงที่สูตร และแมโคร
ชื่อ ใช้ เพื่ออ้างอิงไปยังเซลล์ กลุ่มเซลล์ที่มีค่า สูตร หรือแมโครโดยปกติแล้วขอบเขตของชื่อที่เป็นสากลผ่านสมุดงานทั้งหมด แต่มันสามารถท้องถิ่นไปยังแผ่นงาน ตัวอย่างเช่น ถ้าตัวเลขยอดขายอยู่ในเซลล์ต่าง ๆในแผ่นงานที่แตกต่างกัน ผู้ใช้อาจกำหนดชื่อ " ขาย " ในแต่ละแผ่น มีชื่อในตัว เช่น " print_area " และ " print_titles " ; สองเหล่านี้มีธรรมชาติท้องถิ่นแผ่น
ตรวจสอบชื่อผู้ใช้เช่น MS Excel , OOO Calc หรือ GnumericGenericName คลิกแทรก / ชื่อ / กำหนด นี้จะแสดงชื่อสากล และท้องถิ่นเหล่านั้นจะเลือกในปัจจุบันแผ่น
หนังสือคัดค้านให้สองพจนานุกรม ( name_map และ name_and_scope_map ) และรายการที่ ( name_obj_list ) ซึ่งช่วยให้วิธีการต่างๆของการเข้าถึงชื่อวัตถุมีคนหนึ่งชื่อแต่ละชื่อที่พบในการบันทึกสมุดงาน ชื่อวัตถุมีคุณลักษณะมากมาย หลายที่เกี่ยวข้องเท่านั้น เมื่อ obj.macro คือ 1 .
ในตัวอย่างของไดเรกทอรีที่คุณจะพบ namesdemo.xls ซึ่งโชว์ผลงานหลายวิธีที่แตกต่างกันที่ชื่อสามารถใช้และ xlrdnamesapidemo.py ซึ่งมี 3 คำถามที่แตกต่างกันเพื่อตรวจสอบชื่อในไฟล์ของคุณและแสดงให้เห็นถึงวิธีการแยกสิ่งที่ชื่อหมายถึง ขณะนี้มีหนึ่ง " สะดวกวิธี " ชื่อ cell() ซึ่งสารสกัดคุณค่าในกรณีที่ชื่ออ้างอิงถึงเซลล์เดียว วิธีที่สะดวกมากขึ้น มีการวางแผน รหัสที่มาสำหรับ name.cell ( ใน __init__ . py ) เป็นแหล่งรวมของข้อมูลเกี่ยวกับวิธีแอตทริบิวต์ชื่อแขวนด้วยกัน
ข้อมูลชื่อไม่ได้สกัดจากไฟล์ Excel 5.0 ( อายุมากกว่า book.biff_version < 50 )
แนะนำการจัดรูปแบบนี้คอลเลกชันของคุณสมบัติใหม่ใน xlrd รุ่น 0.6.1 มีวัตถุประสงค์เพื่อให้ข้อมูลที่จำเป็นเพื่อ ( 1 ) แสดง / แสดงตารางเนื้อหา ( พูด ) บนหน้าจอหรือในไฟล์ PDF , และ ( 2 ) คัดลอกสเปรดชีตข้อมูลไปยังแฟ้มอื่นโดยไม่สูญเสียความสามารถในการแสดงผลให้มัน
จาน ; ดัชนีสี
สีจะแสดงใน Excel เป็น ( สีแดง , สีเขียว , สีฟ้า ) ( RGB ) ทูเปิลกับแต่ละองค์ประกอบในช่วง ( 256 ) แต่มันเป็นไปไม่ได้ที่จะเข้าถึงไม่ จำกัด จำนวนสี แต่ละโปรแกรมจะถูก จำกัด ไปยังจาน 64 สีต่างๆ ( 24 ใน Excel 3.0 และ 4.0 , 8 ใน Excel 2.0 ) สีอิงดัชนี ( ดัชนี " สี ) เป็นจานนี้สีดัชนี 0 8 7 แสดงคงที่ในตัวสี : สีดำ , สีขาว , สีแดง , สีเขียว , สีฟ้า , สีเหลือง , สีม่วงแดงและฟ้า
สีที่เหลือในจานสี ( 8 ถึง 63 ใน Excel 5.0 และในภายหลัง ) สามารถเปลี่ยนแปลงได้โดยผู้ใช้ ใน Excel 2003 UI , เครื่องมือ / ตัวเลือก / สีของขวัญจาน 7 แถว 8 สี ช่วงสองแถวที่สงวนไว้สำหรับใช้ในแผนภูมิ .
การติดต่อระหว่างตารางและกำหนดดัชนีไม่ใช่สีจากซ้ายไปขวา บนลงล่าง
ดัชนี 8 ถึง 15 สอดคล้องกับการเปลี่ยนแปลงขนาน 8 ซ่อมสี -- ตัวอย่างเช่นดัชนีตลอดกาลสีฟ้า ; ดัชนี 15 เริ่มเป็นสีฟ้า แต่สามารถเปลี่ยนแปลงได้โดยผู้ใช้ .
สีเริ่มต้นสำหรับแต่ละดัชนี ขึ้นอยู่กับรุ่นของแฟ้มตารางของค่าเริ่มต้นที่มีอยู่ในรหัสแหล่งที่มา ถ้าผู้ใช้เปลี่ยนหนึ่งหรือมากกว่าหนึ่งสี จานบันทึกที่ปรากฏในไฟล์ XLS -- ให้ RGB ค่าดัชนีอาจมีการเปลี่ยนแปลง * * .
หมายเหตุ สีที่สามารถใช้ในรูปแบบ " " หมายเลข " [ สีฟ้า ] . . . . . . . " และ " [ . . . ] color8 " หมายถึงดัชนี 7 สี " [ ; color16 ] . . . . . . . " จะผลิตสีฟ้า เว้นแต่การเปลี่ยนแปลงผู้ใช้สีดัชนี 15
บางอย่างนอกจากนี้ยังมีหลาย " มายากล " สีดัชนีที่ใช้โดย Excel :
0x18 ( biff3-biff4 ) 0x40 ( biff5-biff8 ) : ระบบหน้าต่างข้อความสีสำหรับเขตแดน ( ใช้ใน XF , CF , และบันทึก window2 )
0x19 ( biff3-biff4 ) 0x41 ( biff5-biff8 ) : ระบบหน้าต่างสีพื้นหลังพื้นหลังแบบ ( ใช้ ใน XF และบันทึก CF )
0x43 : สีหน้าระบบ ( บทสนทนาสีพื้นหลัง )
0x4d :ระบบหน้าต่างข้อความสีในแผนที่เขตแดน
0x4e : ระบบหน้าต่างสีพื้นหลังสำหรับแผนภูมิพื้นที่
0x4f : สีอัตโนมัติสำหรับแผนภูมิเขตแดน ( เหมือนจะดำเสมอ )
0x50 : สีพื้นหลัง window ระบบ ( วัตถุที่ใช้ในหมายเหตุ )
0x51 : สีข้อความ Tooltip ระบบ ( วัตถุที่ใช้ในหมายเหตุ )
0x7fff : หน้าต่าง ระบบข้อความสีสำหรับตัวอักษร ( ใช้ในตัวอักษรและบันทึก CF )
หมายเหตุ 0x7fff จะเริ่มต้น * * สีดัชนี ปรากฏบ่อยๆในบันทึกตัวอักษร การจัดรูปแบบการจัดรูปแบบ
เริ่มต้นเริ่มต้นคือนำไปใช้กับเซลล์ว่าง ( ที่ไม่ได้อธิบายโดยเซลล์บันทึก ) ประการแรกเริ่มต้นข้อมูลแถว ( แถวบันทึก rowinfo คลาส ) คือเรา
การแปล กรุณารอสักครู่..
