Python 不使用 xlsxwriter 创建 Excel 文件

标签 python excel optimization xlsxwriter

我有一个包含项目和描述的 Excel 文件,我正在尝试比较描述的相似性,如果它们相似,请将它们放入新的 Excel 文件中。这些项目也有目录号,我正在比较它们,看看它们是否彼此不同,并且它们来自同一供应商 (buy_line),并将它们也放在新的 Excel 文件中。当我运行该文件时,它花费了太长的时间,在我让它运行后,我回来时发现 Spyder 已关闭并且没有新文件。所以这是一个由两部分组成的问题,有没有办法让代码更快?为什么没有创建文件?先感谢您。我的代码如下

`import xlrd
import xlsxwriter
from fuzzywuzzy import fuzz

AllItems = xlrd.open_workbook('2-18All_Items-CleanUp.xlsx','rb')
sheets = AllItems.sheet_names()
item = []
base = []
kit = []
buy_line = []
catalogs = []
descriptions = []
similar_desc_item = []
similar_desc = []
diff_catalog_samebuyline = []
sh = AllItems.sheet_by_index(0)

def readexcelfunc():
    for rownum in range(sh.nrows):
        row_values = sh.row_values(rownum)
        item.append((row_values[0]))
        base.append((row_values[1]))
        kit.append((row_values[2]))
        buy_line.append((row_values[6]))
        catalogs.append((row_values[8]))
        descriptions.append((row_values[12]))

def check_similar_desc():
    for i,k in enumerate(descriptions):
        for j,l in enumerate(descriptions):
            ratio1 = fuzz.token_sort_ratio(k,l)
            if ratio1 > 95 and k != l and base[i] != base[j] and kit[i] == "No":
                similar_desc_item.append(item[i])

def check_notmatching_catalog():
    for x,a in enumerate(catalogs):
        for y,b in enumerate(catalogs):
            ratio2 = fuzz.token_sort_ratio(a,b)
            if ratio2 < 10 and buy_line[x] == buy_line[y]:
                diff_catalog_samebuyline.append(catalogs[x])

def Create_ExcelFile():
    NewWorkbook = xlsxwriter.Workbook('Sim_Desc.xlsx')
    worksheet = NewWorkbook.add_worksheet()
    row1 = 0
    row2 = 0
    for items in similar_desc_item:
        worksheet.write(row1,0,items)
        row1 += 1
    for catalognumb in diff_catalog_samebuyline:
        worksheet.write(row2,3,catalognumb)
        NewWorkbook.save()
        NewWorkbook.close()

readexcelfunc()
check_similar_desc()
print (similar_desc_item)
check_notmatching_catalog()
Create_ExcelFile()

print("Finished")`

最佳答案

Create_ExcelFile() 函数中存在一些问题。首先是工作簿没有 save() 方法。另外,您不会递增 row2,因此第二个 write() 将始终写入第一行,并覆盖其中的其他内容。然而,最重要的是,close() 方法处于错误的级别,因此您过早关闭文件。像这样的东西应该有效:

def Create_ExcelFile():
    NewWorkbook = xlsxwriter.Workbook('Sim_Desc.xlsx')
    worksheet = NewWorkbook.add_worksheet()

    row1 = 0
    row2 = 0

    for items in similar_desc_item:
        worksheet.write(row1,0,items)
        row1 += 1

    for catalognumb in diff_catalog_samebuyline:
        worksheet.write(row2,3,catalognumb)
        # Fix the row2 increment!!

    NewWorkbook.close()

关于Python 不使用 xlsxwriter 创建 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48950626/

相关文章:

python - 运行 Python 脚本时出现名称错误

vba - 我可以使用Excel公式计算一些连续行的总和吗?

excel - 将文件从文件路径复制到另一个

excel - 根据日期范围计算天薪的公式

css - 猫头鹰旋转木马或移动应用程序的图库 View

mysql - 缓慢的 mysql 查询,复制到 tmp 表,使用文件排序

python - 谁能澄清一下 Python Web 自动化的一些选项

python - 乒乓球模拟器

python - 2.7.11 的 pyHook 未导入

php - 通过 PHP 中的父类别从子类别中获取产品详细信息