Python 使用openpyxl将列表写入excel

Python 使用openpyxl将列表写入excel,python,openpyxl,Python,Openpyxl,Python的更新版本,openpyxl的全新版本-我有一个大文本文件,我使用Regex提取我需要的数据-现在我需要用openpyxl将数据写入excel文件。文本文件是一个网络地址转换(NAT)表,如下所示 src_adtr:10.20.30.40 dst_adtr:185.50.40.50 src_adtr_translated:70.60.50.40 dst_adtr_translated:99.44.55.66 这四个元素将是excel文件的一行(我有大约500行需要编写) 当我运行代

Python的更新版本,openpyxl的全新版本-我有一个大文本文件,我使用Regex提取我需要的数据-现在我需要用openpyxl将数据写入excel文件。文本文件是一个网络地址转换(NAT)表,如下所示

src_adtr:10.20.30.40 dst_adtr:185.50.40.50 src_adtr_translated:70.60.50.40 dst_adtr_translated:99.44.55.66
这四个元素将是excel文件的一行(我有大约500行需要编写)

当我运行代码时,我没有得到任何错误,但它也没有做任何事情-我如何才能纠正这一点

import re
import openpyxl

with open("NAT-table.txt", "r") as f:
    text = f.read()

source = re.findall(r':src_adtr\s+.*\s+.*\s+:Name\s+[\(](.*)', text)
dest = re.findall(r':dst_adtr\s+.*\s+.*\s+:Name\s+[\(](.*)', text)
source_adtr = re.findall(r':src_adtr_translated.*\s+.*\s+.*\s+.*\s+.*\s+.*\s+:Name\s+[\(](.*)', text)
dest_adtr = re.findall(r':dst_adtr_translated\s+.*\s+.*\s+.*\s*\s+.*\s+.*\s.*\s+:Name\s+[\(](.*)', text)
firewall = re.findall(r'\w+LINT\d+(?!_)', text) #'\w' includes the '_'(underscore) char

natRules = list(zip(source, dest, source_adtr, dest_adtr, firewall))
wb = openpyxl.load_workbook('NAT-table.xlsx')
sheet = wb.active
for i in range(2, sheet.max_row):
    for k in range(1, 5):
        for t in natRules:
            sheet.cell(row=i, column=k).value = natRules[i][k]
        #sheet.cell(row=rowNum, column=1).value = i

wb.save('NAT-table.xlsx')

示例数据与正则表达式不匹配,因此
Naturles
为空。所以没有什么可写的。我想。我这样说是因为很难从你的问题中分辨出来

因此,由于没有有效的样本数据,很难说您到底哪里出错了。我会指出这部分:

for t in natRules:
    sheet.cell(row=i, column=k).value = natRules[i][k]
迭代
钠溶液
,但不使用
t
。事实上,多次设置单元格

测试代码:

下面是一段测试代码,它使用基本循环,并成功地编写了
xlsx
文件。建议您可以慢慢修改它,使其看起来像您的代码,但要使用您的数据,并查看它在哪里停止工作

data = [list('abcd'), list('efgh')]
wb = openpyxl.load_workbook('test.xlsx')
sheet = wb.active
for i, line in enumerate(data):
    for k, val in enumerate(line):
        sheet.cell(row=i+2, column=k+1).value = val
wb.save('test.xlsx')

是否需要加载现有工作簿?wb.workbook()那么wb.save(filename)就足够了。我加载了一个工作簿,其中有需要填充的coulmns上的标题,但我需要写入文件的数据(四个IP地址)。我怀疑您可能想使用Python的
csv
模块来读取文件。您的第一句话不应该是否定的吗?@charlechlark:-)谢谢。