【问题标题】:How do I get user input into an excel spreadsheet via input() either in a csv or xlsx spreadsheet?如何通过 csv 或 xlsx 电子表格中的 input() 将用户输入到 excel 电子表格中?
【发布时间】:2021-04-12 07:05:33
【问题描述】:

到目前为止,我已经能够在 python 中访问 c​​sv 和 xlsx 文件,但我不确定如何输入用户输入 input() 以将数据添加到电子表格中。

我还希望这个input() 每天只能输入一次,但用于我的电子表格中的不同列。 (这是一个单独的问题)

到目前为止,这是我的代码,第一个用于 csv,第二个用于 xlsx,我不需要两者都可以:

# writing to a CSV file

import csv
def main():
    filename = "EdProjDBeg.csv"
    header = ("Ans1", "Ans2", "Ans3")
    data = [(0, 0, 0)]
    writer(header, data, filename, "write")
    updater(filename)


def writer(header, data, filename, option):
    with open(filename, "w", newline = "") as csvfile:
        if option == "write":
            clidata = csv.writer(csvfile)
            clidata.writerow(header)
            for x in data:
                clidata.writerow(x)
        elif option == "update":
            writer = csv.DictWriter(csvfile, fieldnames = header)
            writer.writeheader()
            writer.writerows(data)
        else:
            print("Option is not known")



# Updating the CSV files with new data

def updater(filename):
    with open(filename, newline= "") as file:
        readData = [row for row in csv.DictReader(file)]
        readData[0]['Ans2'] = 0

    readHeader = readData[0].keys()
    writer(readHeader, readData, filename, "update")


# Reading and updating xlsx files

import openpyxl

theFile = openpyxl.load_workbook(r'C:\Users\joe_h\OneDrive\Documents\Data Analysis STUDYING\Excel\EdProjDBeg.xlsx')
print(theFile.sheetnames)
currentsheet = theFile['Customer1']
print(currentsheet['B3'].value)


wb = openpyxl.load_workbook(r'C:\Users\joe_h\OneDrive\Documents\Data Analysis STUDYING\Excel\EdProjDBeg.xlsx')
ws = wb.active
i = 0
cell_val = ''
# Finds which row is blank first
while cell_val != '':
    cell_val = ws['A' + i].value
    i += 1
# Modify Sheet, Starting With Row i
wb.save(r'C:\Users\joe_h\OneDrive\Documents\Data Analysis STUDYING\Excel\EdProjDBeg.xlsx')

x = input('Prompt: ')

【问题讨论】:

    标签: python excel csv input user-input


    【解决方案1】:

    这适用于将数据输入到 xlsx 文件中。

    只需使用:

    ws['A1'] = "data"

    输入单元格A1

    查看下面的代码,例如使用您的原始代码:

    
    wb = openpyxl.load_workbook('sample.xlsx')
    print(wb.sheetnames)
    currentsheet = wb['Sheet']
    
    
    ws = currentsheet
    #ws = wb.active <-- defaults to first sheet
    
    i = 0
    cell_val = ''
    # Finds which row is blank first
    while cell_val != None:
        i += 1
        cell_val = ws['A' + str(i)].value
        print(cell_val)
    
    x = input('Prompt: ')
    
    #sets A column of first blank row to be user input
    ws['A' + str(i)] = x
    
    #saves spreadsheet
    wb.save("sample.xlsx")
    

    还只是对上面代码中的原始 while 循环进行了一些编辑:

    1. 当单元格为空白时,返回“无”
    2. A1 是左侧的第一个单元格,而不是 A0(移动 i += 1 高于单元格的查找值)
    3. 访问单元格时将变量“i”转换为字符串

    查看https://openpyxl.readthedocs.io/en/stable/获取完整文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-23
      • 2019-01-25
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      相关资源
      最近更新 更多