2015-09-17 8 views
1

Имейте реальный прецедент для этого. Хочет, чтобы иметь возможность сделать некоторые агрегации данных и манипуляцию с панды, предусмотренные рабочий процесс как таковые:Чтение/запись в определенное место в файле Excel

  1. Найти в Excel файл с именем ячейки
  2. до границы блока ячейки (граничном определенной пустого колонке/строка)
  3. чтения блока клеток в панды DataFrame
  4. делать вещи с панд
  5. Запишите полученный DataFrame обратно в тот же файл Excel, в месте, которое определяется другим именем ячейки
  6. сохраняющей тыс e диаграммы и формула файла Excel
+0

Я думаю, что вы можете прочитать [этот пост] (http://stackoverflow.com/questions/28142420/can-pandas-read-and-modify-a-single-excel-file-worksheet-tab- без изменения) в качестве ответа. Это возможный дубликат. – Romain

+0

Я бы не рассматривал вышеуказанное сообщение как ответ на этот вопрос. Поскольку это лишь частично покрывает невозможность записи обратно в файл excel. Как насчет чтения данных из именованной ячейки? – PaulDong

ответ

1

Думаю, вам понадобятся дополнительные ресурсы, такие как DataNitro. https://datanitro.com

Или с небольшим количеством VBA вы инициируете процесс, выгрузите именованный диапазон в csv, запустите python из командной строки и передайте файл csv, откройте его с помощью VBA и обработайте результаты в листе.

+0

Спасибо, что указали мне в правильном направлении! Я пошел в datanitro, но это требует установки, и цены были немного крутыми. Поэтому я нашел xlwings, и я думаю, что один из вариантов использования, которые они предоставили, может охватывать мой прецедент: [link] (http://docs.xlwings.org/datastructures.html). Попробуем это и дадим подробный результат здесь. – PaulDong

+0

Отлично! Несколько лет назад Data Nitro или его предшественник были свободны. Я тоже буду смотреть в xlwings! – user14218

+0

xlwings действительно очень хорошо. Он также охватывает определенную пользователем функцию - это означает, что вы можете запускать функции python в excel и упаковывать их для распространения. Этот вопрос был проголосован, не могли бы вы поддержать эту тему, чтобы распространить слова? Мне пока не хватает репутации. Спасибо – PaulDong

1

Поскольку вопрос был отклонен, маловероятно, что кто-то еще предоставит ответы. Просто отправьте мою реализацию здесь:

Я использовал отличный пакет python под названием xlwings, который можно легко установить, если у вас есть дистрибутив panda.

wb = Workbook(Existing_file) # opened an existing excel file 
df = Range('tb_st').table.value # Find in the excel file a named cell and reach the boundary of the cell block (boundary defined by empty column/row) and read the cell block 
import pandas as pd 
df = pd.DataFrame(df) # into Pandas DataFrame 
df['sum'] = df.sum(axis= 1) # do stuff with Pandas 

Range('cp_tb').value = df.values # Write the resulting DataFrame back to the same Excel file, to a location defined by another named cell 

# tested that this implementation didn't temper any existing formula in the excel file 
Смежные вопросы