Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python未使用xlsxwriter创建Excel文件_Python_Excel_Optimization_Xlsxwriter - Fatal编程技术网

Python未使用xlsxwriter创建Excel文件

Python未使用xlsxwriter创建Excel文件,python,excel,optimization,xlsxwriter,Python,Excel,Optimization,Xlsxwriter,我有一个包含项目和描述的Excel文件,我正在尝试比较描述的相似性,如果它们相似,则将它们放在一个新的Excel文件中。这些项目也有目录,我正在比较它们,看看它们是否彼此不一样,它们是否来自同一个供应商(购买线),将它们也放在新的Excel文件中。当我运行该文件时,它花费的时间太长,在我让它运行后,我返回,Spyder关闭,没有新文件。这是一个由两部分组成的问题,有没有办法让代码更快?为什么没有创建文件?先谢谢你。我的代码在下面 `import xlrd import xlsxwriter fr

我有一个包含项目和描述的Excel文件,我正在尝试比较描述的相似性,如果它们相似,则将它们放在一个新的Excel文件中。这些项目也有目录,我正在比较它们,看看它们是否彼此不一样,它们是否来自同一个供应商(购买线),将它们也放在新的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")`
`import xlrd
导入xlsxwriter
从fuzzyfuzzy导入fuzz
AllItems=xlrd.open_工作簿('2-18All_Items-CleanUp.xlsx','rb')
sheets=AllItems.sheet_名称()
项目=[]
基数=[]
套件=[]
购买线=[]
目录=[]
描述=[]
类似描述项目=[]
类似的描述=[]
diff_catalog_samebuyline=[]
sh=所有项目。表按索引(0)
def readexcelfunc():
对于范围内的rownum(sh.nrows):
行_值=sh.row_值(rownum)
item.append((行值[0]))
base.append((行_值[1]))
附加((行_值[2]))
购买行。追加((行值[6]))
catalogs.append((行值[8]))
descriptions.append((row_值[12]))
def check_SIMPLICAL_desc():
对于枚举中的i,k(说明):
对于枚举中的j,l(说明):
ratio1=模糊标记排序比率(k,l)
如果比率1>95且k!=l和base[i]!=基本[j]和套件[i]=“否”:
类似描述项。追加(项[i])
def check_notmatching_catalog():
对于x,枚举中的a(目录):
对于枚举(目录)中的y、b:
ratio2=模糊。标记\排序\比率(a,b)
如果比率2<10且买入线[x]==买入线[y]:
diff\u catalog\u samebuyline.append(目录[x])
def Create_ExcelFile():
NewWorkbook=xlsxwriter.Workbook('Sim_Desc.xlsx')
工作表=新建工作簿。添加工作表()
第1行=0
第2行=0
对于类似描述项目中的项目:
工作表。写入(第1行,第0行,项目)
行1+=1
对于diff_catalog_samebuyline中的CatalogNum:
工作表。写入(第2、3行,目录编号)
NewWorkbook.save()
NewWorkbook.close()
readexcelfunc()
检查类似描述()
打印(类似描述项目)
检查\u不匹配\u目录()
创建_ExcelFile()
打印(“完成”)`

Create\u ExcelFile()
函数中存在一些问题。第一个是没有工作簿
save()
方法。此外,您没有增加第2行,因此第二行
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()

你为什么要评论这行
#Create_ExcelFile()
。这个函数调用写文件对吗?@arpitolanki是的,这通常不会被注释掉。当我粘贴这段代码时,我正在测试其他东西。我编辑。对不起,谢谢!我很高兴你发现了行增量的问题,如果我让它工作并且只有一个值,那将是非常令人沮丧的。错误级别的.close()解决了没有创建文件的问题。现在我会让它运行,而我做其他事情。再次感谢。