запись в существующую книгу с помощью xlwt [закрыто]
Я не могу найти примеров, где xlwt используется для записи в существующие файлы. У меня есть существующий файл xls, который мне нужно записать. Когда я использую xlrd для чтения файла, я не могу понять, как преобразовать тип "книга", возвращенный в xlwt.Рабочая тетрадь. Я был бы признателен, если кто-то может указать мне на пример.
6 ответов:
Я не могу найти примеров, где xlwt используется для записи в существующие файлы.
нет примеров. Это невозможно. Не с xlwt, ни с любым другим программным обеспечением. Файловая структура XLS является сложной и не действует как база данных, к которой вы можете добавлять строки в таблице по вашему выбору.
любое программное обеспечение, которое вы используете, должно быть похоже на пользователя с копией Excel и клавиатурой: (1) "Откройте файл", т. е. загрузите содержимое в память (2) манипулировать информацией в памяти (3) "сохранить" (который сдувает существующий файл и заменяет его новым файлом) или "сохранить Как" (который записывает новый файл и оставляет существующий файл без изменений).
Я же говорил тебе это около 12 часов назад, но вот она снова:
посетить это резюме сайте.
достопримечательности:
пакет xlutils
учебник по xlrd, xlwt, и xlutils ... содержит примеры
google-group / список рассылки для задавания таких вопросов (помогает сначала проработать учебник)
вот пример кода, который я использовал недавно, чтобы сделать именно это.
Он открывает книгу, идет вниз по строкам, если условие выполнено, он записывает некоторые данные в строку. Наконец он сохраняет измененный файл.
from xlutils.copy import copy # http://pypi.python.org/pypi/xlutils from xlrd import open_workbook # http://pypi.python.org/pypi/xlrd from xlwt import easyxf # http://pypi.python.org/pypi/xlwt START_ROW = 297 # 0 based (subtract 1 from excel row number) col_age_november = 1 col_summer1 = 2 col_fall1 = 3 rb = open_workbook(file_path,formatting_info=True) r_sheet = rb.sheet_by_index(0) # read only copy to introspect the file wb = copy(rb) # a writable copy (I can't read values out of this, only write to it) w_sheet = wb.get_sheet(0) # the sheet to write to within the writable copy for row_index in range(START_ROW, r_sheet.nrows): age_nov = r_sheet.cell(row_index, col_age_november).value if age_nov == 3: #If 3, then Combo I 3-4 year old for both summer1 and fall1 w_sheet.write(row_index, col_summer1, 'Combo I 3-4 year old') w_sheet.write(row_index, col_fall1, 'Combo I 3-4 year old') wb.save(file_path + '.out' + os.path.splitext(file_path)[-1])
вам нужно
xlutils.copy. Попробуйте что-то вроде этого:from xlutils.copy import copy w = copy('book1.xls') w.get_sheet(0).write(0,0,"foo") w.save('book2.xls')имейте в виду, вы не можете перезаписать ячейки по умолчанию, как указано в этот вопрос.
пример кода именно такой:
from xlutils.copy import copy from xlrd import * w = copy(open_workbook('book1.xls')) w.get_sheet(0).write(0,0,"foo") w.save('book2.xls')вам нужно будет создать book1.xls для тестирования, но вы получите идею.
У меня была та же проблема. Мой клиент заказал мне скрипт Python 3.4, который обновляет файлы XLS (а не XLSX) Excel.
1-й пакет xlrd был установлен "pip install" без проблем в моем доме Python.
второй xlwt должен был сказать "pip install xlwt-future", чтобы быть совместимым.
третий xlutils не поддерживает Python 3, но я немного адаптировал его, и теперь он работает, по крайней мере, для фиктивного скрипта:
#!C:\Python343\python from xlutils.copy import copy # http://pypi.python.org/pypi/xlutils from xlrd import open_workbook # http://pypi.python.org/pypi/xlrd from xlwt import easyxf # http://pypi.python.org/pypi/xlwt file_path = 'C:\Dev\Test_upd.xls' rb = open_workbook('C:\Dev\Test.xls',formatting_info=True) r_sheet = rb.sheet_by_index(0) # read only copy to introspect the file wb = copy(rb) # a writable copy (I can't read values out of this, only write to it) w_sheet = wb.get_sheet(0) # the sheet to write to within the writable copy w_sheet.write(1, 1, 'Value') wb.save(file_path)я прикрепил файл здесь: http://ifolder.su/43507580
написать [email protected] если он истек.
С. П.: некоторые функции не вызываются в примере манекена, так что, возможно, им понадобится для адаптации. Кто хочет это сделать, исправьте исключения один за другим с помощью google. Это не очень сложная задача, потому что код пакет маленький...
Я openpyxl
# -*- coding: utf-8 -*- import openpyxl file = 'sample.xlsx' wb = openpyxl.load_workbook(filename=file) # Seleciono la Hoja ws = wb.get_sheet_by_name('Hoja1') # Valores a Insertar ws['A3'] = 42 ws['A4'] = 142 # Escribirmos en el Fichero wb.save(file)
Comments