有没有一种使用 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 中写入数据的简洁方法?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用 openpyxl 读取没有工作簿的 Excel 文件?
❤️小白必看❤️带你避开python大坑❤️在使用openpyxl时,出现ValueError: Unknown engine: openpyxl