有没有一种使用 Python Openpyxl 在 Excel 中写入数据的简洁方法?

Posted

技术标签:

【中文标题】有没有一种使用 Python Openpyxl 在 Excel 中写入数据的简洁方法?【英文标题】:Is there a neat way to write data in Excel using Python Openpyxl? 【发布时间】:2021-04-05 14:34:27 【问题描述】:

我之前问过这个问题是出于不同的目的。从那以后我修改了这段代码。 我想将数据写入 Excel 文件是单独的行。行数和每行的数据是用户输入。头条没问题。数据被写入,但格式很尴尬。第一行数据从 A2 打印到 D2 很好。 第二行从 B3 打印到 E3。同样,第三行从 B4 打印到 F4,依此类推。 我想将第二行从 A3 打印到 D3,而不是从 B3 打印到 E3。我可以对这段代码做些什么来获得最佳解决方案?谢谢。

from openpyxl import Workbook

#Creates an Excel file from the scratch
wb = Workbook() #object of Workbook type
print(wb.active.title)
print(wb.sheetnames)
wb['Sheet'].title="Report_Amount"
sh1 = wb.active  #Activate the sheet
sh1['A1'].value = "Item" #Writing into the cell
sh1['B1'].value = "Quantity"
sh1['C1'].value = "Price($)"
sh1['D1'].value = "Amount($)"

askrow = input("how many rows of data do you want to add: ")
askrow = int(askrow)
column1 = sh1.max_column
row1 = askrow
print(f'no. of columns : column1')
print(f'no. of rows : row1')

for k in range (2,row1+1):
    inputItem = input("Enter Item Name: ")
    sh1.cell(row=k, column=k - 1).value = inputItem
    inputQuantity = input("Enter Quantity: ")
    inputQuantity = int(inputQuantity)
    sh1.cell(row=k, column=k).value = inputQuantity
    inputPrice = input("Enter Price: ")
    inputPrice = int(inputPrice)
    sh1.cell(row=k, column=k + 1).value = inputPrice
    sh1.cell(row=k, column=k + 2).value = ((sh1.cell(row=k, column=k).value) * sh1.cell(row=k, column=k + 1).value)

print("file saved")
wb.save("C:\\Users\\Ricky\\Desktop\\FirstCreatedPythonExcel1.xlsx")

【问题讨论】:

指定列时,如果您希望它每次都从同一列开始打印,则不需要k。 A 列是 1,所以你可以做类似sh1.cell(row=k, column=1).value 【参考方案1】:

你的代码有两个问题 一个是 for 循环中的 Column 变量,它是一个常数,但你使用了行变量 k,另一个是项目数比用户输入少一。

我已经修复了这两个并试图简化你的代码

from openpyxl import Workbook
wb = Workbook() #object of Workbook type
print(wb.sheetnames)
wb['Sheet'].title="Report_Amount"
sh1 = wb.active  #Activate the sheet
sh1['A1'].value = "Item" #Writing into the cell
sh1['B1'].value = "Quantity"
sh1['C1'].value = "Price($)"
sh1['D1'].value = "Amount($)"
askrow = int(input("how many rows of data do you want to add: "))
for k in range (2,askrow+2):
    sh1.cell(row=k, column=1).value = input("Enter Item Name: ")
    inputQuantity = int(input("Enter Quantity: "))
    sh1.cell(row=k, column=2).value = inputQuantity
    inputPrice = float(input("Enter Price: "))
    sh1.cell(row=k, column=3).value = inputPrice
    sh1.cell(row=k, column=4).value = inputPrice * inputQuantity
wb.save("FirstCreatedPythonExcel1.xlsx")

请将文件路径改回来,现在您还可以给产品价格赋予浮点数。

【讨论】:

@Ricky101 请将答案标记为已解决

以上是关于有没有一种使用 Python Openpyxl 在 Excel 中写入数据的简洁方法?的主要内容,如果未能解决你的问题,请参考以下文章

7Python文件操作工具 openpyxl 工具 2

Python_Openpyxl模块.Excel数据处理

有没有办法使用 openpyxl 读取没有工作簿的 Excel 文件?

在python 2.7中安装openpyxl

❤️小白必看❤️带你避开python大坑❤️在使用openpyxl时,出现ValueError: Unknown engine: openpyxl

如何安装openpyxl