在python脚本将excel列从一个文件复制到另一个文件之前,我需要如何将excel列更改为文本的帮助
当前正在使用openpyxl。。。。 但对任何一个能完成这项工作且不会丢失工作表中其他格式或颜色的库开放
问题是,当某个东西有日期时,我需要它以直接文本的形式复制,而不是作为日期
所以当有人打了2019年6月17日。。。它一直都是这样 而不是换成2019-06-17 0:00:00
我认为正确的地方应该是在我加载每个工作簿之后。 我知道如果我手动更改文件,以便将所需的列格式化为“文本”,则脚本工作完美,所有内容都按预期复制。在
我在openpyxl中寻找一个函数,它与右键单击excel中的单元格、选择格式和选择“文本”是一样的
# open both files, load them in,
#Change Columns F and H to Text Formatting before doing the next part of the script
#Begin Openpyxl Section
orig_wb = load_workbook('old_qc_report.xlsx')
new_wb = load_workbook('new_qc_report.xlsx')
sheetlist = orig_wb.get_sheet_names()
sheet = orig_wb.get_sheet_by_name(sheetlist[0])
sheetlist2 = new_wb.get_sheet_names()
sheet2 = new_wb.get_sheet_by_name(sheetlist[0])
s1rownumber = 1
for s1row in sheet.iter_rows(min_row=2, max_row= sheet.max_row, min_col=6, max_col=6, values_only=True):
s1rownumber +=1
for cell in s1row:
if cell != None:
# print(cell)
transfer_cust_rec = cell
product_description_ref = sheet[str("A" + str(s1rownumber))].value
order_No_ref = sheet[str("C" + str(s1rownumber))].value
# print(product_description_ref)
# print(order_No_ref)
s2rownumber = 1
for s2row in sheet2.iter_rows(min_row = 2, min_col=1, max_col=1, values_only=True):
s2rownumber +=1
for cell2 in s2row:
if cell2 == product_description_ref:
if sheet2[str("C" + str(s2rownumber))].value == order_No_ref:
sheet2[str("F" + str(s2rownumber))].value = transfer_cust_rec
s1rownumber = 1
for s1row in sheet.iter_rows(min_row=2, max_row= sheet.max_row, min_col=8, max_col=8, values_only=True):
s1rownumber +=1
for cell in s1row:
if cell != None:
# print(cell)
transfer_notes = cell
product_description_ref = sheet[str("A" + str(s1rownumber))].value
order_No_ref = sheet[str("C" + str(s1rownumber))].value
# print(product_description_ref)
# print(order_No_ref)
s2rownumber = 1
for s2row in sheet2.iter_rows(min_row = 2, min_col=1, max_col=1, values_only=True):
s2rownumber +=1
for cell2 in s2row:
if cell2 == product_description_ref:
if sheet2[str("C" + str(s2rownumber))].value == order_No_ref:
sheet2[str("H" + str(s2rownumber))].value = transfer_notes
new_wb.save(outfilepath)
wb.close
os.remove("old_qc_report.xlsx")
os.remove("new_qc_report.xlsx")
print("\nThis program took %2.3f seconds to run\n"%(time.time() - start_time))
time.sleep(3)
仅使用OpenPyXL编辑
由于您希望在保存Excel文件后保留此格式,而不仅仅是在OpenPyXL版本中,所以使用数字格式为
'@'
输出
希望有帮助(:
相关问题 更多 >
编程相关推荐