Запись в существующий файл Excel с использованием Python
У меня есть файл.xlsx, в котором есть несколько рабочих листов (с некоторым содержанием). Я хочу записать некоторые данные на конкретные листы, скажем, sheet1 и sheet5. Прямо сейчас я делаю это, используя функции xlrd, xlwt и xlutils copy(). Но есть ли способ сделать это, открыв файл в режиме добавления, добавив данные и сохранив их (например, как мы делаем это для файлов text/csv)?
Вот мой код:
rb = open_workbook("C:\text.xlsx",formatting_info='True')
wb = copy(rb)
Sheet1 = wb.get_sheet(8)
Sheet2 = wb.get_sheet(7)
Sheet1.write(0,8,'Obtained_Value')
Sheet2.write(0,8,'Obtained_Value')
value1 = [1,2,3,4]
value2 = [5,6,7,8]
for i in range(len(value1)):
Sheet1.write(i+1,8,value1[i])
for j in range(len(value2)):
Sheet2.write(j+1,8,value2[j])
wb.save("C:\text.xlsx")
Спасибо
2 ответа
Вы можете сделать это с помощью модуля openpyxl или с помощью модуля xlwings
Использование openpyxl
from openpyxl import workbook #pip install openpyxl from openpyxl import load_workbook wb = load_workbook("C:\text.xlsx") sheets = wb.sheetnames Sheet1 = wb[sheets[8]] Sheet2 = wb[sheets[7]] #Then update as you want it Sheet1 .cell(row = 2, column = 4).value = 5 #This will change the cell(2,4) to 4 wb.save("HERE PUT THE NEW EXCEL PATH")
файл text.xlsx будет использоваться в качестве шаблона, все значения из файла text.xlsx вместе с обновленными значениями будут сохранены в новом файле
Использование xlwings
import xlwings wb = xlwings.Book("C:\text.xlsx") Sheet1 = wb.sheets[8] Sheet2 = wb.sheets[7] #Then update as you want it Sheet1.range(2, 4).value = 4 #This will change the cell(2,4) to 4 wb.save() wb.close()
Здесь файл будет обновлен в файле text.xlsx, но если вы хотите получить копию файла, вы можете использовать код ниже
shutil.copy("C:\text.xlsx", "C:\newFile.xlsx") #copies text.xslx file to newFile.xslx
и использовать
wb = xlwings.Book("C:\newFile.xlsx") instead of wb = xlwings.Book("C:\text.xlsx")
Как пользователь обоих модулей, я предпочитаю второй, а не первый.
Для работы с существующими файлами Excel вы должны использовать openpyxl. Другие распространенные библиотеки, например, те, которые вы используете, не поддерживают манипулирование существующими файлами Excel. Обходной путь должен
- сохраните выходной файл под другим именем - text_temp.xlsx
- удалите свой оригинальный файл - text.xlsx
- переименуйте ваш выходной файл - text_temp.xlsx в text.xlsx