2015-12-28 3 views
3

Я хочу сканировать ячейки листа Excel с помощью win32com для python и сохранять словарь местоположения ячеек и их значений.Как сканировать все ячейки листа

Есть ли эффективный способ сканирования листа? Смысл, сканировать как можно меньше ячеек, но все же сканировать все ячейки с данными/значением и игнорировать удаленные ячейки.

Раньше я использовал openpyxl, и у него был параметр self.max_row и self.max_column для каждого листа. Есть ли аналогичный параметр или хороший способ их вычисления?

+0

Я использовал для использования openpyxl, и он имел параметр '' self.max_row' и self.max_column 'для каждого листа. Есть ли аналогичный параметр или хороший способ их вычисления? –

+0

Почему бы вам просто не использовать 'openpyxl'? – steinar

+0

Он не поддерживает валидаторы и изображения рабочей книги. Также он не поддерживает вставку новых строк, и очень сложно обновить формулы excel при добавлении нового мануфактура строки с помощью 'openpyxl'. –

ответ

1

Как насчет попробовать что-то вроде этого ...

end_row = ActiveSheet.UsedRange.Rows.Count 
end_column = ActiveSheet.UsedRange.Columns.Count 

Если у вас есть очень большой диапазон, который вы планируете идти до конца, я хотел бы предложить пытается свести к минимуму вперед и назад через COM-слоев, путем принятия a диапазон ячеек в Python все сразу.

Я задокументировал некоторые из вещей, с которыми я столкнулся некоторое время назад here.

Основные советы от моего предварительного письма:

# Take many values at once rather than reading each individually 
end_num = sh.UsedRange.Rows.Count 
col_a = sh.Range(xl.Cells(1, 1), xl.Cells(end_num, 1)).Value 

# The magic numbers to turn calculation on and off 
xlCalculationManual = -4135 
xlCalculationAutomatic = -4105 

# Turn calculation to manual 
xl.Calculation = xlCalculationManual 

# Turn screen updating off 
xl.ScreenUpdating = False 

# RUN YOUR CODE HERE # 

# Turn things back on when done 
xl.ScreenUpdating = True 
xl.Calculation = xlCalculationAutomatic 
+0

Я использовал 'last_col = xlApp.ActiveCell.SpecialCells (constants.xlLastCell) .Column' ' LAST_ROW = xlApp.ActiveCell.SpecialCells (constants.xlLastCell) .Row' для получения последней ячейки. Я возьму совет по набору ячеек в python –

+0

Обратите внимание, что вы можете использовать технику, упомянутую в моем ответе на http://stackoverflow.com/questions/23290216/error-xlprimary-not-defined-in-python- win32com/23306850 # 23306850 для импорта констант – Schollii

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