Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 11.04.2016
Сообщений: 19

Ошибка в коде

10.10.2018, 14:55. Показов 898. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Прошу чекнуть код, представленный ниже и по возможности дать комментарии и предложения(код не работает).
Суть такая:
1. Функция получает путь к файлу и диапазон ячеек( пример привел в последней строке print)
2. Создается переменная на элементы строки (непонятно создается ли объект в памяти или только ссылка)
3. Создается переменная data_range2 для того чтобы считывать с одной строки в excel
3. Преобразование из string в int
4. В цикле считывается каждая строка excel и добавляется в список
5. Нужно возвратить список в другую функцию для обработки.



Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import win32com.client
def data_retrieval(file_address, data_range):
    ax=data_range[0]
    bx=data_range[1]
    cx=data_range[3]
    dx=data_range[4]
    data_range2 = '%s' % (ax) +'%s' % (bx) + ':' + '%s' %(cx) + '%s' %(bx)
    ibx = int (bx)
    idx = int (dx)
    Excel = win32com.client.Dispatch("Excel.Application")
    wb = Excel.Workbooks.Open('%s' % (file_address))
    sheet = wb.Worksheets('Ввод данных')
    vals2 = []
    while bx <= dx:
        vals = [r[0].value for r in sheet.Range("%s" %(data_range2))]
        vals2 = vals2.append(vals)
        bx=bx+1
        data_range2 = '%s' % (ax) +'%s' % (bx) + ':' + '%s' %(cx) + '%s' %(bx)
    wb.Close(True)
    Excel.Quit()
    return vals2
print (data_retrieval('C:\\ Спецификация оборудования и материалов_изм.1.xls', 'C4:J25'))
Добавлено через 18 минут
Корректировка кода:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import win32com.client
def data_retrieval(file_address, data_range):
    dr0=data_range[0]
    dr1=data_range[1]
    dr3=data_range[3]
    dr4=data_range[4]
    data_range2 = '%s' % (dr0) +'%s' % (dr1) + ':' + '%s' %(dr3) + '%s' %(dr1)
    idr1 = int (dr1)
    idr4 = int (dr4)
    Excel = win32com.client.Dispatch("Excel.Application")
    wb = Excel.Workbooks.Open('%s' % (file_address))
    sheet = wb.Worksheets('Ввод данных')
    vals2 = []
    while idr1 <= idr4:
        vals = [r[0].value for r in sheet.Range("%s" %(data_range2))]
        vals2 = vals2.append(vals)
        idr1=idr1+1
        data_range = '%s' % (dr0) +'%s' % (idr1) + ':' + '%s' %(dr3) + '%s' %(idr1)
    wb.Close(True)
    Excel.Quit()
    return vals2
print (data_retrieval('C:\\Спецификация оборудования и материалов_изм.1.xls', 'C4:J25'))
Добавлено через 16 минут
Не учел того что в переменные dr0, dr1, dr3, dr4 попадают символы расположенные по индексам и если диапазон меняется в длине то все летит...

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import win32com.client
def data_retrieval(file_address, data_range):
    dr0=data_range[0]
    dr1=data_range[1]
    dr3=data_range[3]
    dr4=data_range[4]
    data_range2 = '%s' % (dr0) +'%s' % (dr1) + ':' + '%s' %(dr3) + '%s' %(dr1)
    idr1 = int (dr1)
    idr4 = int (dr4)
    print (idr4)
    Excel = win32com.client.Dispatch("Excel.Application")
    wb = Excel.Workbooks.Open('%s' % (file_address))
    sheet = wb.Worksheets('Ввод данных')
    vals2 = []
    while idr1 <= idr4:
        vals = [r[0].value for r in sheet.Range("%s" %(data_range2))]
        print (vals)
        vals2 = vals2.append(vals)
        print (vals2)
        idr1=idr1+1
        print (idr1)
        data_range2 = '%s' % (dr0) +'%s' % (idr1) + ':' + '%s' %(dr3) + '%s' %(idr1)
        print (data_range2)
    wb.Close(True)
    Excel.Quit()
    return vals2
data_retrieval('C:\\Спецификация оборудования и материалов_изм.1.xls', 'C4:J25')
Добавлено через 57 минут
Со списками разобрался, насчет диапазона строки хотелось бы получить подсказку, как обрабатывать?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import win32com.client
def data_retrieval(file_address, data_range):
    dr0=data_range[0]
    dr1=data_range[1]
    dr3=data_range[3]
    dr4=data_range[4]
    data_range2 = '%s' % (dr0) +'%s' % (dr1) + ':' + '%s' %(dr3) + '%s' %(dr1)
    idr1 = int (dr1)
    idr4 = int (dr4)
    Excel = win32com.client.Dispatch("Excel.Application")
    wb = Excel.Workbooks.Open('%s' % (file_address))
    sheet = wb.Worksheets('Ввод данных')
    vals2 = []
    while idr1 <= idr4:
        vals = [r[0].value for r in sheet.Range("%s" %(data_range2))]
        vals2.append(vals)
        idr1=idr1+1
        data_range2 = '%s' % (dr0) +'%s' % (idr1) + ':' + '%s' %(dr3) + '%s' %(idr1)
    wb.Close(True)
    Excel.Quit()
    return vals2
print(data_retrieval('C:\\ProjectNPPGKS\\579.16.41-В4 Спецификация оборудования и материалов_изм.1.xls', 'C4:J9'))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2018, 14:55
Ответы с готовыми решениями:

Ошибка в коде взаимодействия клиента и сервера на основе протокола TCP/IP (ошибка в коде)
Задание: Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Реализовать параллельное соединение с использованием...

Ошибка с графикой в приложении Windows form (ошибка не в коде!)
Всем доброго времени суток! Написал программу в windows form. Несколько раз скомпилировал и все хорошо. Сейчас попробовал снова запустить...

Ошибка 150 при создании таблицы, ошибка в коде?
Код генерируется программой, но работать на сервере нехочет, к сожелению попойму где там может быть ошибка. Опытным путём выяснил что...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.10.2018, 14:55
Помогаю со студенческими работами здесь

Ошибка в коде CS0649. Не понятно почему выдает данную ошибку.Также ошибка в форме со словом ref
Код Класса using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; ...

Ошибки в коде Qt - ошибка: undefined reference to `qMain(int, char**)'; ошибка: error: ld returned 1 exit status
Здравствуйте, есть проект в нем 2 ошибки, не очень понимаю как их можно решить. Помогите, буду признателен! Вот main.cpp #include...

Ошибка в коде (Ошибка сегментирования (core dumped)
Добрый день. Подскажите пожалуйста, где ошибка в коде? char ch; string s; while ((ch = cin.get()) != '0' ) ...

Ошибка в коде и ошибка HTTP 400
Здарова всем, у меня тут проблема случилась, я только начинаю программировать. Выдает ошибку HTTP Error 400, проблему нашел, заключалась...

Ошибка в коде , ошибка 200
Всем привет, помогите пожалуйста, я новичек в Паскале, вот программа, суть её переводить любое число в любую систему исчесления, но вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru