如何从 Excel 中提取数据并使用 Python 将修改后的字符串输出到 txt 文件中?

How to extract data from Excel and output in txt file along with modified string using Python?

我有 excel 个包含 2 个选项卡的文件。第一个选项卡是“摘要”,第二个选项卡是“员工”。 excel 的格式如下所示。请注意,下面 excel 仅用于展示我的原始文件始终包含“摘要”作为第一个 sheet,其他选项卡始终基于“Sheet 名称”(单元格 B2)。所以一个 excel 可以有 10 个选项卡或 20 个选项卡,第一个是“摘要”,我们不这样做 need.What 我想做的是从每个 [=46] 的第 6 行开始提取数据=] 并在“TXT 文件输出”中创建如下所示的 txt 文件 section.So 生成的员工 txt 文件将包含 2 SQL 代码,如下所示。如果类型是“STRING”则类型将替换为VARCHAR,如果类型是日期则替换为日期等在生成的txt文件中。

我开始使用这个 linkPython 中加载文件,但是,每当我 运行 下面的代码生成 txt 文件时,我都会收到 4 个不同的 txt 文件和文件第 6 行到第 9 行的名称。不确定是什么问题?基本上,我需要一个包含以下代码片段“在 TXT 文件中输出”的 txt 文件。请帮忙!!

提前感谢您的时间和努力!!

Excel 文件格式

TXT文件输出:

到目前为止的代码

    from openpyxl import load_workbook

data_file='\test.xlsx'

# Load the entire workbook.
wb = load_workbook(data_file)
ws = wb['Employee']




    for i in range(6, ws.max_row+1):  
        name = ws.cell(row=i, column=1).value  
        outputFile = open('C:/Jupyter Notebook/{}.txt'.format(name), 'w')  
        for j in range(1, ws.max_column + 1): 
            outputFile.write(ws.cell(row=i, column=j).value + '\n')  
    outputFile.close() 

一个可能的解决方案是将 excel 文档导出到 csv 文件,然后使用 python3 的 built-in csv reader 加载导出的 csv 文件中的数据。希望这对您有所帮助!

关于 Python3 的 csv 库的更多信息:https://docs.python.org/3/library/csv.html

这种问题有点难回答,因为恐怕答案或多或少只是“去学习如何在 Python 中实际编程”。看起来你只是在盲目地复制你在教程中看到的代码 - 如果你精通 Python 那么很明显如何做你想做的事情以及为什么你现在正在做的事情会赢没用。

尽管如此,由于解决许多个别问题是您学习东西的方式之一,让我看看是否可以在这里给您一些指示。

您的代码目前看起来像这样(请注意,为了本答案的可读性,我缩短了输出文件路径):

for i in range(6, ws.max_row+1):  
    name = ws.cell(row=i, column=1).value
    outputFile = open('{}.txt'.format(name), 'w')  
    for j in range(1, ws.max_column + 1): 
        outputFile.write(ws.cell(row=i, column=j).value + '\n')  
outputFile.close()

我不能 运行 这个代码,因为我手头没有任何 Excel 文件,但我想它应该产生四个文件,分别称为 Name.txtSalary.txtDate.txtPhone.txt。每个文件应包含工作表相应行中的值,以换行符分隔。

您的问题是:(1) 为什么这会输出到四个文件而不是一个,以及 (2) 如何将您想要的 SQL 命令写入该文件而不只是来自工作表。

对于 (1),脚本正在写入四个文件,因为这正是您告诉它要做的。您使用四个不同的文件名调用了四次 open(),因此它创建了四个文件。如果您只想创建一个文件并写入其中,请尝试以下操作:

outputFile = open('output.txt', 'w')  
for i in range(6, ws.max_row+1):  
    name = ws.cell(row=i, column=1).value
    for j in range(1, ws.max_column + 1): 
        outputFile.write(ws.cell(row=i, column=j).value + '\n')  
outputFile.close()

要写出你想要的输出,你应该...写出你想要的输出。例如,要将行“CREATE TABLE TRANSIENT TABLE STG_EMPLOYEE(”写入文件,您可以编写

outputFile.write("CREATE TABLE TRANSIENT TABLE STG_EMPLOYEE(" + "\n")

要写“你好”,你运行outputFile.write("Hello"),等等。 ws.cell(row=i, column=j).value 获取工作表中第 (i, j) 个单元格的内容,这就是将其传递给 write() 导致该值写入文件的原因。只需将要写入文件的内容调用 write()