Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python openpyxl从一个工作簿复制到另一个工作簿_Python_Openpyxl - Fatal编程技术网

Python openpyxl从一个工作簿复制到另一个工作簿

Python openpyxl从一个工作簿复制到另一个工作簿,python,openpyxl,Python,Openpyxl,我试图将单元格从一个工作簿复制到另一个工作簿,以便进行一些操作。虽然我可以指定样式/值并将其指定给新工作簿,但无法将字体从现有工作簿填充到新工作簿。 下面是我的代码片段 from openpyxl import load_workbook from openpyxl import Workbook File = load_workbook(filename='testcopy.xlsx') FileSheets = File.get_sheet_names() AcSheet = File.ac

我试图将单元格从一个工作簿复制到另一个工作簿,以便进行一些操作。虽然我可以指定样式/值并将其指定给新工作簿,但无法将字体从现有工作簿填充到新工作簿。 下面是我的代码片段

from openpyxl import load_workbook
from openpyxl import Workbook
File = load_workbook(filename='testcopy.xlsx')
FileSheets = File.get_sheet_names()
AcSheet = File.active

write_file = Workbook()
wr_ac_sheet = write_file.active
wr_ac_sheet['A1'].value = AcSheet['A1'].value
wr_ac_sheet['A1'].style = AcSheet['A1'].style
write_file.save('copied_excel.xlsx')
这很好,但如果我使用

wr_ac_sheet['A1'].font= AcSheet['A1'].font
我得到下面的错误

 File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 90, in write_data
stylesheet = write_stylesheet(self.workbook)
File "C:\Python27\lib\site-packages\openpyxl\styles\stylesheet.py", line 206, in write_stylesheet
stylesheet.fonts = wb._fonts
File "C:\Python27\lib\site-packages\openpyxl\descriptors\sequence.py", line 27, in __set__
seq = [_convert(self.expected_type, value) for value in seq]
File "C:\Python27\lib\site-packages\openpyxl\descriptors\base.py", line 59, in _convert
raise TypeError('expected ' + str(expected_type))
TypeError: expected <class 'openpyxl.styles.fonts.Font'>
文件“C:\Python27\lib\site packages\openpyxl\writer\excel.py”,第90行,在write\u数据中
样式表=编写样式表(self.workbook)
文件“C:\Python27\lib\site packages\openpyxl\styles\stylesheet.py”,第206行,在write\u样式表中
stylesheet.fonts=wb.\u字体
文件“C:\Python27\lib\site packages\openpyxl\descriptors\sequence.py”,第27行,在\uuu集中__
seq=[[seq中值的转换(self.expected_type,value)]]
文件“C:\Python27\lib\site packages\openpyxl\descriptors\base.py”,第59行,in\u convert
raise TypeError('应为'+str(应为_类型))
TypeError:应为
如果我尝试打印现有工作簿字体,我会得到这个,因此它可以正常阅读

print wr_ac_sheet['A1'].font

<openpyxl.styles.fonts.Font object>
Parameters:
name='Calibri', charset=None, family=2.0, b=False, i=False, strike=None, 
outline=None, shadow=None, condense=None, color= 
<openpyxl.styles.colors.Color 
 object>
Parameters:
tint=0.0, auto=None, theme=1L, rgb=None, indexed=None, type='theme', 
extend=None, sz=11.0, u=None, vertAlign=None, scheme='minor'
打印工作表['A1']。font
参数:
name='Calibri',charset=None,family=2.0,b=False,i=False,strike=None,
轮廓=无,阴影=无,压缩=无,颜色=
参数:
tint=0.0,auto=None,theme=1L,rgb=None,indexed=None,type='theme',
extend=None,sz=11.0,u=None,vertAlign=None,scheme='minor'

我想将单元格的所有属性(类似于format painter)分配给新工作簿,有关于如何操作的指导吗?

因为您需要复制样式信息。

为什么要设置显式样式

#!/usr/bin/python3
# -*- coding: utf8 -*-

import sys
import openpyxl
import warnings

warnings.simplefilter("ignore")

xlsxfile = sys.argv[1]
xlscopy = sys.argv[2]

wb = openpyxl.load_workbook(xlsxfile)

sheet = wb['Sheet1']
val = sheet['J7'] # set up an initial value, eg. 34

val.value = 2
wb.save(xlscopy)
这对我来说适用于大型和复杂格式的XLSX文件