使用xlwt写入现有工作簿

Raj*_*j N 57 python xlrd xlwt

我无法找到使用xlwt写入现有文件的示例.我有一个我需要写的现有xls文件.当我使用xlrd读取文件时,我似乎无法弄清楚如何将返回的"Book"类型转换为xlwt.Workbook.如果有人可以给我一个例子,我将不胜感激.

Gre*_*reg 254

这是我最近用来做的一些示例代码.

它打开一个工作簿,沿着行向下,如果满足条件,它会在行中写入一些数据.最后它保存修改后的文件.

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

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])
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案 (60认同)
  • @chefsmart是的,应该是的.此外,格雷格回答不是一个鸡巴.+1 (55认同)
  • 这个程序是否会默默地抛弃它无法翻译的一切:VB宏,大多数图形,高级格式和页面布局? (10认同)
  • 谢谢.这是一个非常有用的答案. (2认同)

ktd*_*drv 21

你需要xlutils.copy.尝试这样的事情:

from xlutils.copy import copy
w = copy('book1.xls')
w.get_sheet(0).write(0,0,"foo")
w.save('book2.xls')
Run Code Online (Sandbox Code Playgroud)

请记住,默认情况下,您无法覆盖此问题中提到的单元格.

  • 我收到错误: AttributeError: 'str' object has no attribute 'formatting_info' 你知道为什么会这样吗? (2认同)

Jer*_*ury 8

代码示例正是如此:

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')
Run Code Online (Sandbox Code Playgroud)

你需要创建book1.xls来测试,但你明白了.


小智 5

打开pyxl

# -*- 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)
Run Code Online (Sandbox Code Playgroud)

  • 尽管此代码可能会解决问题,但您应该始终解释它的作用以及它为什么有帮助。 (2认同)