使用xlsxwriter实现行加粗与单元格着色的问题求助
问题解决:Xlsxwriter生成空Excel及格式设置实现
核心问题:生成空文件的原因
你的代码缺少workbook.close()调用,Xlsxwriter采用缓冲写入机制,所有内容会先存在内存中,只有调用close()方法才会将数据写入磁盘文件,这就是为什么你生成的工作簿为空且无报错的原因。
格式设置实现方案
针对你需要的两个格式要求,我们可以通过Xlsxwriter的格式对象来实现:
- 创建加粗格式用于整个标题行
- 创建加粗+蓝色填充格式用于标题行前5列
修改后的完整代码
import xlsxwriter user_input = [ ["10002",'01/04/23','',"300",'',"300",'','','',"44.44",'','','','',"34232",'','','',"34",'','',"2312"], ["10001","01/30/2023","63","15","12345","gatorade","0.1234","a0001","4","50","50","115.4","123","33456","34543","34234","3432","34.22","1800","1800","0","0"] ] column_titles = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22'] # 创建工作簿和工作表 workbook = xlsxwriter.Workbook('workbook.xlsx') worksheet = workbook.add_worksheet() # 定义格式 bold_format = workbook.add_format({'bold': True}) blue_bold_format = workbook.add_format({'bold': True, 'bg_color': '#ADD8E6'}) # 浅蓝色填充 # 写入标题行:前5列用蓝色加粗格式,其余列用加粗格式 for col_num, title in enumerate(column_titles): if col_num < 5: worksheet.write(0, col_num, title, blue_bold_format) else: worksheet.write(0, col_num, title, bold_format) # 写入数据行(从第2行开始,索引为1) for row_num, data in enumerate(user_input, start=1): worksheet.write_row(row_num, 0, data) # 必须关闭工作簿才能写入文件 workbook.close()
关键改动说明
- 移除
user_input.insert(0, column_titles):改为单独处理标题行,方便应用不同格式,避免混合数据和标题的格式逻辑。 - 创建格式对象:通过
add_format()定义需要的样式,Xlsxwriter支持丰富的格式参数,比如字体、颜色、填充等。 - 分区域写入标题:循环标题列,前5列应用蓝色加粗格式,其余列仅加粗,精准满足你的格式需求。
- 添加
workbook.close():这是解决空文件问题的核心步骤,确保内存中的数据被写入磁盘。
内容的提问来源于stack exchange,提问作者ijoubert21
相关产品推荐
相关产品推荐

