манипулирование таблицами Excel с помощью Python - PullRequest
0 голосов
/ 12 июня 2018

Я новичок в Python, особенно когда речь заходит об использовании его в Excel.Мне нужно написать код для поиска строки «Mac», «Asus», «AlienWare», «Sony» или «Gigabit» в более длинной строке для каждой ячейки в столбце A. В зависимости от того, какая из этих строк находится ввся запись в ячейке столбца A, она должна записать одну из этих 5 строк в соответствующую строку в ячейке столбца C.Иначе, если он не найдет ни одного из пяти, он напишет «Other» в соответствующую строку в столбце C. Например, если ячейка столбца A2 содержит строку «ProLiant Asus DL980 G7, правильный код будет писать« Asus »в ячейку столбца С2.Он должен делать это для каждой отдельной ячейки в столбце A, записывая соответствующую строку в соответствующую ячейку в столбце C. Каждая ячейка в столбце A будет иметь одну из пяти строк Mac, Asus, AlienWare, Sony или Gigabit.Если он не содержит одну из этих строк, я хочу, чтобы в соответствующей ячейке в столбце 3 была записана строка «Другое».Пока что у меня есть код (совсем немного):

import openpyxl
wb = openpyxl.load_workbook(path)
sheet = wb.active
    for i in range (sheet.max_row):
    cell1 = sheet.cell (row = i, column = 1)
    cell2 = sheet.cell (row = I, column = 3)

# missing code here

wb.save(path)

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Вы не пытались написать код для решения проблемы.Возможно, вы захотите сначала заставить openpyxl записать в книгу Excel и убедиться, что она работает, даже если это фиктивные данные.Эта страница выглядит полезной - здесь

После того, как все заработает, вам понадобится простая функция, которая принимает в качестве аргумента строку.

def get_column_c_value(string_from_column_a):
     if "Lenovo" in string_from_column_a:
          return "Lenovo"
     else if "HP" in string_from_column_a:
          return "HP"
     # strings you need to check for here in the same format as above
     else return "other"

Попробуйтеи если у вас есть какие-либо проблемы, дайте мне знать, где вы застряли.

0 голосов
/ 12 июня 2018

Я мало работал с openpyxl, но похоже, что вы пытаетесь выполнить простой поиск по строке.

Вы можете получить доступ к отдельным ячейкам, используя

cell1.internal_value

Затем вашоператор if / else будет выглядеть примерно так:

if "HP" in str(cell1.internal_value):

Данные могут быть назначены непосредственно в ячейку, чтобы вы могли иметь

ws['C' + str(i)] = "HP"

Вы можете сделать это для всех данных в ваших ячейках

...