2014-10-02 59 views
0

所以我試圖在數據提取期間排除前三行。Python/Excel - 切片提取excel數據 - 排除行維護結構

for col_num in xrange(sheet.ncols): 
    col = sheet.col_values(col_num, start_rowx=3, end_rowx=None) 
    writer.writerow(col) #this syntax also may be skewing my results as well 

這個for循環消除了前3行放,然後把行變成列。

有關如何維護數據結構但同時消除行的任何建議?

低於全部腳本:

import glob 
import os 
import xlrd 
import csv 

ROOTDIR = r'C:\Users\username\Desktop\Mults' 
wb_pattern = os.path.join(ROOTDIR, '*.xlsx') 

workbooks = glob.glob(wb_pattern) 

with open('merged.csv', 'wb') as outcsv: 
writer = csv.writer(outcsv) 
    for wb in workbooks: 
     book_path = os.path.join(ROOTDIR, wb) 
     book = xlrd.open_workbook(book_path) 
     sheet = book.sheet_by_index(0) 
     for colx in xrange(sheet.ncols): 
      col = sheet.col_values(colx, start_rowx=2, end_rowx=None) 
      writer.writerow(col) #this syntax also may be skewing my results 

謝謝!

任何幫助非常感謝!

回答

0

如果你想要行值,你爲什麼拉列寫行爲?拉行值並寫下:

import glob 
import os 
import xlrd 
import csv 

ROOTDIR = r'C:\Users\username\Desktop\Mults' 
wb_pattern = os.path.join(ROOTDIR, '*.xlsx') 

workbooks = glob.glob(wb_pattern) 
start_rownum = 3 # or wherever you want to start copying 
with open('merged.csv', 'wb') as outcsv: 
    writer = csv.writer(outcsv) 
    for wb in workbooks: 
     book_path = os.path.join(ROOTDIR, wb) 
     book = xlrd.open_workbook(book_path) 
     sheet = book.sheet_by_index(0) 
     for rownum in xrange(start_rownum, sheet.numrows): 
      row = sheet.row_values(rownum) 
      writer.writerow(row) 
+0

感謝您的快速響應。我明白你的意思。我顯然誤解了[col_value]語法。感謝您爲我清除這個問題 – 2014-10-02 20:07:43

+0

'col_values'跨越多行對列進行切片,這對於處理電子表格是很好的,但對於'csvwriter'沒有什麼期望。 – 2014-10-02 20:14:22