python - 数据仅不适用于 python 中的 openpyxl
问题描述
我是 Python 的初学者,我正在开发一个程序,它获取 .xlsx 的一些数据并将其放入另一个 .xlsx。为此决定使用openpyxl。这是我的代码的开头:
path1 = "sourceFile.xlsx"
path2 = "targetFile.xlsx"
sheet1 = openpyxl.load_workbook(path1, data_only=True)
sheet2 = openpyxl.load_workbook(path2)
如您所见,我使用“data_only=True”仅获取源文件的数据。我的问题是,使用此解决方案,源文件的几个单元格返回“无” 。当我删除“data_only=True”参数时,返回公式,在这种情况下为“=B28”。目标文件的 B28 单元格与源文件的 B28 单元格的值不同,这不是我想要的。
我已经在寻找解决方案,但惊讶地一无所获。如果您有任何想法,欢迎您!
解决方案
如果原始文件中 B28 的值与输出文件不同,则问题可能出在您用于复制单元格的代码上。当被问及如何提取单元格时,您提供了提取单个单元格值的代码。你是如何提取所有细胞的?循环?如果您共享该代码,我们可以进一步分析此问题。
我包含将值从一个文件复制到另一个文件的代码,您应该能够根据需要进行调整。
from openpyxl import load_workbook, Workbook
## VERSION 1: Output will have formulas from WB1
WB1 = load_workbook('int_column.xlsx')
WB1_WS1 = WB1['Sheet']
WB2 = Workbook()
WB2_WS1 = WB2.active # get the active sheet, so you don't need to create then delete one
# copy rows
for x, row in enumerate(WB1_WS1.rows):
if x < 100: # only copy first 100 rows
num_cells_in_row = len(row)
for y in range(num_cells_in_row):
WB2_WS1.cell(row=x + 1, column=y + 1).value = WB1_WS1.cell(row=x + 1, column=y + 1).value
WB2.save('copied.xlsx')
## VERSION 2: Output will have value displayed in cells in WB1
WB1 = load_workbook('int_column.xlsx', data_only=True)
WB1_WS1 = WB1['Sheet']
WB2 = Workbook()
WB2_WS1 = WB2.active # get the active sheet, so you don't need to create then delete one
# copy rows
for x, row in enumerate(WB1_WS1.rows):
if x < 100: # only copy first 100 rows
num_cells_in_row = len(row)
for y in range(num_cells_in_row):
WB2_WS1.cell(row=x + 1, column=y + 1).value = WB1_WS1.cell(row=x + 1, column=y + 1).value
WB2.save('copied.xlsx')
如果您需要进一步的帮助,请发布更多代码。