2015-11-03 2 views
-5

У меня есть лист Excel, имеющий 4 строки и 5 столбцов. Последние столбцы имеют одно из двух значений, т.е. завершено и ожидается. Все, что я хочу, - это экспортировать строки, имеющие последнее значение столбца, в ожидании текстового файла. Я попробовал код, но он дает ошибкуожидается ошибка с отступом блока

import xlrd 

workbook=xlrd.open_workbook('C:/Users/admin/Documents/omkar.xlsx') 
sh=workbook.sheet_by_name('Sheet1') 

def ncols(): 

print sh.nrows 
print sh.ncols 

n=0 
i=0 

file=open('C:/Users/admin/Documents/om.txt','w') 

for n in range(sh.nrows): 

    for i in range(sh.ncols): 
     data =str(sh.cell_value(n,i)) + " " 

    if sh.cell_value(n,ncols) == "pending": 

     print data, 
     file.write(data + " ") 

    print 
    file.write("\n") 
+0

Может быть, вы должны попробовать другой код? – Julien

+1

Показать свой код. Покажите, что вы ожидали. Покажите, что вы получили. –

+0

Используйте [Автофильтр Excel] (https://support.office.com/en-gb/article/Filter-data-in-an-Excel-table-7d8e9739-2898-4bfe-9d0f-c6204e6e5c8a) и скопируйте/вставьте ряды. – TessellatingHeckler

ответ

0
import xlrd 

workbook=xlrd.open_workbook('C:/Users/admin/Documents/omkar.xlsx') 
sh=workbook.sheet_by_name('Sheet1') 

def ncols(): 

print sh.nrows 
print sh.ncols 

n=0 
i=0 

file=open('C:/Users/admin/Documents/om.txt','w') 

for n in range(sh.nrows): 

    for i in range(sh.ncols): 
     data =str(sh.cell_value(n,i)) + " " 

    if sh.cell_value(n,ncols) == "pending": 

     print data, 
     file.write(data + " ") 

    print 
    file.write("\n") 

должен быть-

import xlrd 

workbook=xlrd.open_workbook('C:/Users/admin/Documents/omkar.xlsx') 
sh=workbook.sheet_by_name('Sheet1') 

def ncols(): 
    print sh.nrows 
    print sh.ncols 

    file = open('C:/Users/admin/Documents/om.txt', 'w') 

    for n in range(sh.nrows): 
     if sh.cell_value(n, sh.ncols-1) == 'pending': 
      for i in range(sh.ncols): 
       data = str(sh.cell_value(n, i)) + ' ' 
       print data, 
       file.write(data) 
      print 
      file.write('\n') 

ncols() 
+0

Извините, но он не дает никакого вывода и не создает никакого текстового файла. – user3544059

+0

Так же нет ошибок. CrakC – user3544059

+0

@ user3544059 Это потому, что ваш подход неправильный. Также, когда вы определяете функцию, вам также нужно вызвать ее. Проверьте мой обновленный ответ. Это должно решить вашу проблему. – CrakC

Смежные вопросы