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