Python程序读取Excel文件并将其sql复制到新的文本文件中

2024-04-25 22:53:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python很陌生,需要帮助。你知道吗

我使用的是python3.6.1。我正在创建一个Python脚本,它将读取一个文件夹中的所有Excel(.xlsx)文件。在这些文件中,它应该搜索包含SQL选项卡作为工作表的文件,然后从工作表的SQL选项卡复制A2列,并创建一个与附加到它的Excel文件同名的.SQL。 到目前为止,我能够读取文件夹中的所有.xlsx文件,查看它们是否有SQL选项卡,然后复制A2列。有人能帮我创建一个.sql文件,并将所有Excel文件的sql复制到这些.sql文件中,并在.sql文件后面附加Excel名称吗。你知道吗

下面是我现在的位置

import os
import pandas as pd
from os import walk
from openpyxl import load_workbook

cpt = sum([len(files) for r, d, files in os.walk(r"C:\Users\Data_Dumps\New folder")])

for dirpath, dirnames, filenames in walk(r'C:\Users\Data_Dumps\New folder'):
    print('Total Files in the folder are: %d' %cpt)
    print('Total filenames are') 
    print(filenames)

files = os.listdir(dirpath)
print(files)
files_xls = [f for f in filenames if f[-4:] == 'xlsx']
print('Excel files are:')
print(files_xls)

#Creating data frame to store SQL
df = pd.DataFrame()

files_xls_string = '\n'.join(files_xls)
df = df.append(files_xls_string)

wb = load_workbook(files_xls_string, read_only=True)
if 'SQL' in wb.sheetnames:
    sheet = wb.get_sheet_by_name('SQL')
    SQL = sheet['A2'].value

Note to @Shams: This is a SQL SELECT statement, where are your data?
A2 value eg:

select ip.item_code , ip.gla_code_ar ,r.ruleit_text LCSPAINTSZ from item i , itemplant ip , ruleit r where i.item_code = ip.item_code and ip.plant_code = '14' and i.item_active = 1 --and i.item_code = '457332' and i.item_code = r.item_code and r.urule_code = 'LCSPAINTSZ'

Tags: and文件inimportipa2sqlos
1条回答
网友
1楼 · 发布于 2024-04-25 22:53:18
# python 3.6 way is shorter
from pathlib import Path

# do you know the basename of the file you just read?
filename_xls = 'file123'

# is cell read as string?
cell_content_str = """select ip.item_code , ip.gla_code_ar ,r.ruleit_text LCSPAINTSZ 
from item i , itemplant ip , ruleit r where i.item_code = ip.item_code 
and ip.plant_code = '14' and i.item_active = 1  and i.item_code = '457332' 
and i.item_code = r.item_code and r.urule_code = 'LCSPAINTSZ'"""

def make_sql_filename(basename: str):
    return f'{basename}.sql'

def write_to_sql_file(content: str, basename: str):
    Path(make_sql_filename(basename)).write_text(content)

if __name__ == '__main__':
    write_to_sql_file(cell_content_str, filename_xls)

一般来说,这看起来太简单了,不可能是一个答案,也许我遗漏了一些问题。你知道吗

相关问题 更多 >