0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39

Получить данные из ячеек эксель

26.07.2016, 15:24. Показов 18934. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Появилась потребность вынуть данные из ячеек эксель файла. Проблема в том, что в папке может быть разное количество файлов эксель, и нужно из каждого из них вынуть все заполненные ячейки столбца A. Как вынуть из конкретного файла конкретную ячейку я знаю, а вот как реализовать, а вот когда файлов и ячеек n-ное количество не понимаю(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.07.2016, 15:24
Ответы с готовыми решениями:

Можно ли получить информацию из ВКонтакте и поместить данные в Эксель?
Можно ли как-то получать информацию из ВКонтакте ( лайки, просмотры записей на стене групп). Если да, то какие технологии для этого нужны?...

получить данные из ячеек БД
Собственно есть база MySQL в ней таблица в таблице данные .... Подключён к ней через SQLConnection,SimpleDataSet и DataSource (всё...

Необходимо получить/добавить данные в табличной форме из файла эксель. НО НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ КЛАССЫ И ОБЪЕКТЫ(курсач)
Необходимо получить/добавить данные в табличной форме из файла эксель. НО НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ КЛАССЫ И ОБЪЕКТЫ(курсач).

18
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 17
26.07.2016, 15:45
Отфильтруй список файлов и пройдись по списку циклом
Python
1
2
3
4
5
6
directory = os.getcwd()
files = os.listdir(directory)
csvfiles = filter(lambda x: x.endswith('.xls'), files) 
for key in sorted(csvfiles):
    namefile = key
    print namefile
Добавлено через 8 минут
А дальше пробежаться по столбцу екселя.
Python
1
2
3
4
5
6
7
wb = openpyxl.load_workbook(filename='statist.xlsx', read_only=False, use_iterators=False, data_only=True)
sheet = wb['Stat']
emptyrow = 2
checkdata = sheet.cell(row=emptyrow, column=9).value
while checkdata: # если ячейка заполнена
    emptyrow += 1
    checkdata = sheet.cell(row=emptyrow, column=9).value
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
26.07.2016, 16:15  [ТС]
vargor, А можно поподробнее?
Например, есть папка, в ней на данный момент три файла 1.xlsx, 2.xlsx, 3.xlsx(но может быть и больше) и нужно из каждого получить данные столбца A, чтобы записать информацию из каждой ячейки в переменную. Как это сделать?
0
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 17
26.07.2016, 16:26
Если ты используешь openpyxl
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
directory = os.getcwd()
files = os.listdir(directory)
csvfiles = filter(lambda x: x.endswith('.xlsx'), files)
for key in sorted(csvfiles):
    namefile = key
    wb = openpyxl.load_workbook(filename=namefile, read_only=False, use_iterators=False, data_only=True)
    sheet = wb['Stat']
    emptyrow = 2
    checkdata = sheet.cell(row=emptyrow, column=9).value
    while checkdata: # пока ячейка заполнена
        checkdata = sheet.cell(row=emptyrow, column=9).value
        print checkdata
        emptyrow += 1
Добавлено через 1 минуту
'Stat' вкладка в екселе
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
26.07.2016, 16:30  [ТС]
vargor, Я использую xlrd, xlwt
0
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 17
26.07.2016, 16:35
я их не использую, но принцип один.
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
26.07.2016, 16:53  [ТС]
Что-то я запутался( Для xlsx я использую openpyxl
Но опыта мало, я не могу понять где в данном коде указывается каталог, в котором лежат xlsx файлы и куда потом он выводятся?
0
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 17
26.07.2016, 17:18
Указанный каталог
Python
1
2
directory = '\Python\MyProg'
files = os.listdir(directory)
Текущий каталог
Python
1
2
directory = os.getcwd()
files = os.listdir(directory)
Добавлено через 3 минуты
список файлов заносится в список csvfiles
Python
1
csvfiles = filter(lambda x: x.endswith('.xlsx'), files)
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
26.07.2016, 18:01  [ТС]
Python
1
2
directory = '\Python\MyProg'
files = os.listdir(directory)
На вторую строчку ругается. Работает, если ее исправить на
Python
1
2
directory = '\Python\MyProg'
files = '\Python\MyProg'
Добавлено через 10 минут
Попробовал сделать вывод в файл
Python
1
2
3
4
fout = open('...', 'w')
    f.write( csvfiles )
    f.write("\n".join(list).join("\n"));
    fout.close()
Ничего не выводит(
0
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 17
26.07.2016, 18:50
files = os.listdir(directory) это нефильтрованый список файлов в папке. Менять на files = '\Python\MyProg' это бред. Ругается скорее всего потому, что не импортировал модуль OS. Поставь в начале import os
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
26.07.2016, 19:03  [ТС]
Да, ругался из-за отсутствия import os. Спасибо!

Теперь такие ошибки выдает:
Traceback (most recent call last):
File "...", line 8, in <module>
wb = openpyxl.load_workbook(filename=namefile , read_only=False, use_iterators=False, data_only=True)
File "...", line 151, in load_workbook
archive = _validate_archive(filename)
File "....", line 115, in _validate_archive
archive = ZipFile(filename, 'r', ZIP_DEFLATED)
File "...", line 1009, in __init__
self.fp = io.open(file, filemode)
FileNotFoundError: [Errno 2] No such file or directory: 'test.xlsx'
0
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 17
26.07.2016, 21:56
Если у тебя файл test.xlsx не в корневой директории, а в отдельной папке, конечно его не находит. Переложи его в папку с программой. Да и понять, что-то без текста самой программы сложно. Что ты там с переменной directory намудрил не видно.

Добавлено через 4 минуты
Опять же нужно видеть название листа твоего ексель файла, номер колонки и строки в которых начинаются данные.
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
26.07.2016, 21:59  [ТС]
vargor, С ошибками разобрался, действительно из-за того, что файл в другой папке был. Спасибо)
Остается вопрос как получить данные из столбцов A,B,C для их сравнения. В столбцах B и C числа, мне нужно сравнить, B1 и C1, B2 и C2, B3 и C3 и тд и вывести в файл
0
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 17
26.07.2016, 22:07
Что значит сравнить? Какое красивее на вид?

Добавлено через 1 минуту
И с какого номера строки начинаются числа?
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
26.07.2016, 22:07  [ТС]
vargor,
Пусть будет не сравнить тогда, а вычесть, из C вычесть B
Числа со второй строки начинаются
0
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 17
26.07.2016, 22:13
Python
1
2
3
4
5
6
7
8
    emptyrow = 2
    checkdata = sheet.cell(row=emptyrow, column=2).value
    while checkdata: # пока ячейка заполнена
        b = sheet.cell(row=emptyrow, column=2).value
        c = sheet.cell(row=emptyrow, column=3).value
        print c-b
        emptyrow += 1
        checkdata = sheet.cell(row=emptyrow, column=2).value
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 39
26.07.2016, 22:28  [ТС]
vargor,
Спасибо большое, буду разбираться)

Вывод в файл так делается?
Python
1
2
3
fout = open('test.txt', 'w')
print( csvfiles , file=fout)
fout.close()
0
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 17
26.07.2016, 23:27
Смотря что нужно в файл писать. если переменные то вот:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
f = open('myvar.txt', 'w')  # Дописать в файл 'a'
myvar1 = 100
myvar2 = 200
myvar3 = 300
#--------пишем построчно в файл
print >> f, 'Моя переменная 1', myvar1
print >> f, 'Моя переменная 2', myvar2
print >> f, 'Моя переменная 3', myvar3
f.close()
 
#--------читаем файл
f = open('myvar.txt',)
for line in f:
    print line.strip()
f.close()
0
224 / 209 / 63
Регистрация: 26.05.2011
Сообщений: 363
27.07.2016, 06:45
Функция обработки одного файла:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import os
 
from openpyxl import load_workbook
 
def compare_columns(fname):
    words = ("равно", "больше", "меньше")
 
    def cmp(a, b):
        return (a > b) - (a < b)
 
    wb = load_workbook(fname, read_only=True)
    ws = wb["Лист1"]
    data = ws.get_squared_range(2, 2, 3, ws.max_row)
 
    with open(os.path.splitext(fname)[0] + ".txt", "wt", encoding="utf-8") as f:
        for b, c in data:
            print("{} {} {}".format(b.value, words[cmp(b.value, c.value)],
                                    c.value), file=f)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.07.2016, 06:45
Помогаю со студенческими работами здесь

Получить данные из всех ячеек в DataGridView
доброе время суток! помогите, пожалуйста, решить проблему:имеется таблица datagridview не связанная с базой данных, и состоящая из двух...

Получить данные из всех ячеек DataGrid
Здравствуйте. Из *.xlsx загружается таблица в DataGrid. Таблица случайного размера, содержит 0 и 1. Возникло несколько вопросов: Как...

NET CF 2.0 получить данные из ячеек выделенной сторки DataGrid
Помогите вытянуть данные из выделенной строки string selectString = &quot;Barcode = '4820020350987'&quot;; ...

Формат ячеек в эксель
Подскажите, пожалуйста не могу найти как мне создать пользовательский формат со следующими условиями: В ячейке должно быть 4 цифры...

Как получить данные из excel, просуммировать значение ячеек одного столбца, сравнить даты из другого
Доброго времени суток. Есть такая задача: получить данные из excel, просуммировать значение ячеек одного столбца, сравнить даты из другого....


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru