如何为一系列单元格编写格式。
我正在做的是从oracle中遍历列表中的列名,并将这些列格式化为日期,其中列名以“ DT”开头。但是我也想使整个数据范围都有边界。
我想真正地将日期格式应用于列,然后分别应用边框...但是最后一种格式适用于获胜,边框的应用将覆盖列上的日期格式。
理想情况下,我想用边框爆炸数据范围,然后将日期格式应用于日期列,同时保留边框。
您可以选择一个范围然后应用格式设置还是在VBA中进行范围交集?
# Generate EXCEL File
xl_filename = "DQ_Valid_Status_Check.xlsx"
workbook = xlsxwriter.Workbook(xl_filename)
# Add a bold format to use to highlight cells.
bold = workbook.add_format({'bold': True})
date_format = workbook.add_format(
{'num_format': 'dd-mmm-yyyy hh:mm:ss'})
border = workbook.add_format()
border.set_bottom()
border.set_top()
border.set_left()
border.set_right()
worksheet_info = workbook.add_worksheet()
worksheet_info.name = "Information"
worksheet_info.write('A1', 'Report Description:', bold)
worksheet_info.write('B1', 'ARIEL Data Quality Report for Checking Authorisation Status of Marketing Applications')
worksheet_info.write('A2', 'Report Date:', bold)
worksheet_info.write('B2', datetime.datetime.now(), date_format)
worksheet_data = workbook.add_worksheet()
worksheet_data.name = "DQ Report"
worksheet_data.write_row('A1', col_names)
for i in range(len(results)):
print("result " + str(i) + ' of' + str(len(results)))
print(results[i])
worksheet_data.write_row('A' + str(i + 2), results[i])
#worksheet_data.set_row(i + 2, None, border)
# add borders
for i in range(len(results)):
worksheet_data.set_row(i + 2, None, border)
# format date columns
for i in range(len(col_names)):
col_name = col_names[i]
if col_name.startswith("DT"):
print(col_name)
worksheet_data.set_column(i, i, None, date_format)
workbook.close()
答案 0 :(得分:1)
根据常见问题解答,当前无法format a range of cells at once,但是将来的功能可能允许这样做。
您可以创建包含多个格式属性的Format对象,并在写入每个单元格时将自定义格式应用于每个单元格。参见"Creating and using a Format Object"。
答案 1 :(得分:0)
要将边框立即应用于所有列,您可以执行以下操作:
border = workbook.add_format({'border':2})
worksheet_info.set_column(first_col=0, last_col=10, cell_format=border)
要保留边框格式,您可以将date_format修改为:
date_format = workbook.add_format(
{'num_format': 'dd-mmm-yyyy hh:mm:ss',
'border': 2})