Есть ли способ добавить новую строку в электронную таблицу Excel с помощью Python?

Я искал вокруг, пробовал некоторые win32com и некоторые xlrd/xlwt/xlutils, но все, что я могу сделать, это вставить данные в существующие строки Excel - я хочу иметь возможность вставить одну новую строку (в частности, первую, в моем случае). Кто-нибудь знает, как это сделать с помощью Python?

согласно предложению, я включу то, что я сделал, чтобы добавить строку в мой файл excel

from xlrd import open_workbook # http://pypi.python.org/pypi/xlrd
from xlutils.copy import copy # http://pypi.python.org/pypi/xlutils
from xlwt import easyxf # http://pypi.python.org/pypi/xlwt
import xlwt

... следующая часть имеет отступ, потому что она находится в некоторых циклах for, плохо подходит для форматирования переполнения стека

        rb = open_workbook( os.path.join(cohort_path, f),on_demand=True,encoding_override="cp1252",formatting_info=True)
        #The following is because Messed up file has a missing row
        if f=='MessedUp.xls':
            r_sheet = rb.sheet_by_name('SHEET NAME')  # read only copy to introspect the file
            wb = copy(rb)
            w_sheet = wb.get_sheet(rb.sheet_names().index('SHEET NAME')) #Workaround
            #fix first rows
            for col_index in range(0, r_sheet.ncols):
                for row_index in range(2, r_sheet.nrows):
                    xfx = r_sheet.cell_xf_index(row_index-1, col_index)
                    xf = rb.xf_list[xfx]
                    bgx = xf.background.pattern_colour_index
                    xlwt.add_palette_colour("custom_colour", 0x17)
                    #rb.set_colour_RGB(0x21, 251, 228, 228) #or wb??
                    style_string = 'pattern: pattern solid, fore_colour custom_colour' if bgx in (55,23) else None
                    style = xlwt.easyxf(style_string)
                    w_sheet.write(row_index, col_index, r_sheet.cell(row_index-1,col_index).value,style=style)
            wb.save(os.path.join(cohort_path, 'fixed_copy.xls'))

person amchugh89    schedule 18.08.2014    source источник
comment
xlwt вполне может это сделать   -  person wnnmaw    schedule 18.08.2014
comment
Общая схема будет использовать xlrd для получения количества строк, а затем просто писать в строку после этого.   -  person wnnmaw    schedule 18.08.2014
comment
Да, я начал это делать, данные скопировались нормально, но теперь мне нужно найти способ сохранить стиль (цвета фона и прочее).   -  person amchugh89    schedule 18.08.2014
comment
Вы всегда должны включать такие детали в исходный вопрос. Не могли бы вы обновить свой вопрос, чтобы точно сказать, что вы пытаетесь сделать, что вы пытались сделать (в частности) и проблема, с которой вы столкнулись (включая фактические и ожидаемые результаты)   -  person wnnmaw    schedule 18.08.2014


Ответы (1)


xlwt поможет вам в письменной форме преуспеть.

Чтобы написать что-нибудь в Excel, вам нужно указать строку и столбец. Это похоже на worksheet.write(x,y,x*y). Эта команда записывает в ячейку с x, y координирует значения x * y.

Итак, в вашем случае, чтобы записать в новую строку, просто укажите номер строки, в которой вы хотите создать новую строку, и напишите столько столбцов, сколько хотите. Легкий.

Это не список, к которому вам нужно добавить себя. Вы можете перейти в любую ячейку и написать.

Ознакомьтесь с полезным примером здесь — http://codingtutorials.co.uk/python-excel-xlrd-xlwt/

person iamkhush    schedule 18.08.2014