манипулирование файлами excel 2007 с помощью python

Используя python, я должен иметь возможность выполнять следующие операции в книге для excel 2007:

  1. удалять строки
  2. сортировка листа
  3. получение отдельных значений из столбца

Я просматриваю openpyxl ; однако он, по-видимому, имеет ограниченные возможности.

Кто-нибудь может рекомендовать библиотеку, которая может выполнять вышеуказанные задачи?

One Solution collect form web for “манипулирование файлами excel 2007 с помощью python”

Я хочу предисловие к этому, давая вам знать, что это только решение на базе Windows . Но если вы используете Windows, я бы рекомендовал использовать Win32Com, который можно найти здесь. Этот модуль предоставляет программному доступу Python к любому Microsoft Office Application (включая Excel) и использует многие из тех же методов, что и в VBA. Обычно то, что вы будете делать, это записать макрос (или вспомнить из памяти), как сделать что-то в VBA, а затем использовать те же функции в Python

Для начала мы хотим подключиться к Excel и получить доступ к первому листу в качестве примера

#First we need to access the module that lets us connect to Excel import win32com.client # Next we want to create a variable that represents Excel app = win32com.client.Dispatch("Excel.Application") # Lastly we will assume that the workbook is active and get the first sheet wbk = app.ActiveWorkbook sheet = wbk.Sheets(1) 

На этом этапе у нас есть переменная с именем sheet, которая представляет рабочий лист excel, с которым мы будем работать. Конечно, есть несколько способов доступа к листу, это обычно так, как я демонстрирую, как использовать win32com с excel, потому что он очень интуитивно понятен.

Теперь предположим, что у меня есть следующие значения на первом листе, и я перейду один за другим, как ответить на то, что вы спрашивали:

  A 1 "d" 2 "c" 3 "b" 4 "a" 5 "c" 

Удалить строки: Предположим, что вы хотите удалить первую строку на своем активном листе.

 sheet.Rows(1).Delete() 

Это создает:

  A 1 "c" 2 "b" 3 "a" 4 "c" 

Далее Позволяет сортировать ячейки в порядке возрастания (хотя я бы рекомендовал извлечь значения на python и выполнить сортировку в списке и отправить значения обратно)

 rang = sheet.Range("A1","A4") sheet.Sort.SetRange(rang) sheet.Sort.Apply() 

Это создает:

  A 1 "a" 2 "b" 3 "c" 4 "c" 

И теперь мы получим отличные значения из столбца. Главное, чтобы забрать здесь, как извлечь значения из ячеек. Вы можете выбрать сразу несколько ячеек и с листом. Range («A1», «A4»), или вы можете получить доступ к значениям, итерации по ячейке по ячейке с листом. Целлы (строка, col). Диапазон на порядок выше, но Cells немного легче для отладки.

 #Get a list of all Values using Range valLstRange = [val[0] for val in sheet.Range("A1","A4").Value] #Get a list of all Values using Cells valLstCells = [sheet.Cells(row,1).Value for row in range(1,4)] #valLstCells and valLstRange both = ["a","b","c","c"] 

Теперь, наконец, вы хотите сохранить книгу, и вы можете сделать это со следующим:

 wbk.SaveAs("C:/savedWorkbook.xlsx") 

И все готово!

Информация о COM

Если вы работаете с VBA, .NET, VBscript или любым другим языком для работы с Excel, многие из этих методов Excel будут выглядеть одинаково. Это потому, что все они используют одну и ту же библиотеку, предоставленную Microsoft. В этой библиотеке используется COM, который является способом Microsoft по предоставлению API для программистов, которые являются агностиками языка. Сам COM является более старой технологией и может быть сложным для отладки. Если вы хотите получить дополнительную информацию о Python и COM, я настоятельно рекомендую Python Programming на Win32 от Марка Хэммонда. Он парень, который получает крик после установки Python на Windows в официальном установщике .msi.

АЛЬТЕРНАТИВЫ В WIN32COM

Мне также нужно указать, что есть несколько фантастических альтернатив с открытым исходным кодом, которые могут быть быстрее COM в большинстве ситуаций и работать на любой ОС (Mac, Linux, Windows и т. Д.). Эти инструменты все анализируют сжатые файлы, которые содержат .xlsx. Если вы не знали, что .xlsx-файл – это .zip, просто измените расширение на .zip, и затем вы сможете изучить содержимое (что интересно делать хотя бы один раз в вашей карьере). Из них я рекомендую Openpyxl, который я использовал для разбора и создания файлов Excel на сервере, где производительность была критической. Никогда не используйте win32com для действий сервера, поскольку он открывает экземпляр exel.exe вне процесса для каждого экземпляра, который может быть негерметичным

РЕКОМЕНДАЦИЯ

Я бы рекомендовал win32com для пользователей, которые тесно взаимодействуют с отдельными наборами данных (аналитиками, финансовыми службами, исследователями, бухгалтерами, бизнес-операциями и т. Д.), Которые выполняют операции по обнаружению данных, так как отлично работают с открытыми книгами. Тем не менее, разработчики или пользователи, которым необходимо выполнять очень большие задачи с небольшим размером или очень большими манипуляциями или параллельной обработкой, должны использовать пакет, такой как openpyxl.

  • Чтение и запись таблицы базы данных доступа в python
  • python xlrd неподдерживаемый формат или поврежденный файл.
  • Как написать существующий файл excel без перезаписи данных (с использованием pandas)?
  • Программно извлекать данные из электронной таблицы Excel
  • Применить границы ко всем ячейкам в диапазоне с помощью openpyxl
  • Используя Python, напишите файл Excel со столбцами, скопированными из другого файла Excel
  • Получить формулу из ячейки Excel с помощью python xlrd
  • Вернуть объект рабочей книги openpyxl как HttpResponse в django. Является ли это возможным?
  • Python - лучший язык программирования в мире.