xlsxwriter基本操作
xlsxwriter是一个用于创建和修改Excel文件(.xlsx)的Python库。它提供了丰富的功能,可以创建复杂的Excel工作簿,包括工作表、图表、图像,以及设置单元格样式和格式等。
创建一个新的Excel文件并添加工作表
import xlsxwriter # 创建一个新的Excel文件 workbook = xlsxwriter.Workbook('example.xlsx') # 添加一个名为"Sheet1"的工作表 worksheet = workbook.add_worksheet("Sheet1") # 在工作表中写入数据 worksheet.write('A1', '姓名') worksheet.write('B1', '年龄') worksheet.write('A2', '张三') worksheet.write('B2', 25) worksheet.write('A3', '李四') worksheet.write('B3', 30) # 保存并关闭Excel文件 workbook.close()
设置单元格样式和格式
import xlsxwriter workbook = xlsxwriter.Workbook('example.xlsx') worksheet = workbook.add_worksheet() # 创建一个加粗的格式对象 bold_format = workbook.add_format({'bold': True}) # 在单元格中写入数据,并应用加粗格式 worksheet.write('A1', '标题', bold_format) worksheet.write('A2', '数据1') worksheet.write('B2', 100) # 设置列宽和行高 worksheet.set_column('A:B', 15) worksheet.set_row(0, 20) workbook.close()
添加图表
import xlsxwriter workbook = xlsxwriter.Workbook('example.xlsx') worksheet = workbook.add_worksheet() # 写入一些数据 data = [10, 20, 30, 40, 50] worksheet.write_column('A1', data) # 创建一个柱状图对象 chart = workbook.add_chart({'type': 'column'}) # 添加数据系列到图表中 chart.add_series({ 'values': '=Sheet1!$A$1:$A$5', 'name': '数据', }) # 将图表插入工作表中 worksheet.insert_chart('C1', chart) workbook.close()
写入MySQL数据到Excel
在实际工作中,我们经常需要将数据库中的数据导出到Excel表格中进行进一步的分析和处理。Python中的pymysql和xlsxwriter库提供了很好的解决方案,使得这一过程变得简单而高效。
建立数据库连接
首先,我们需要使用pymysql库来建立与MySQL数据库的连接,并指定要连接的数据库名称、用户名和密码。
import pymysql connection = pymysql.connect( host='localhost', user='root', password='123456', database='caiwu' )
编写SQL查询语句
接下来,我们可以编写需要执行的SQL查询语句,以获取所需的数据。
query = "SELECT * FROM report_品名"
创建Excel文件对象和工作表对象
使用xlsxwriter库,我们可以创建一个新的Excel文件和工作表对象,准备将数据写入其中。
import xlsxwriter workbook = xlsxwriter.Workbook('output.xlsx') worksheet = workbook.add_worksheet()
创建游标对象并执行SQL查询
创建游标对象,执行SQL查询语句,并获取查询结果的列名。
cursor = connection.cursor() cursor.execute(query) column_names = [i[0] for i in cursor.description]
将查询结果写入Excel文件
遍历查询结果,并将数据写入到Excel文件中。在此过程中,我们还可以对时间字段进行格式化处理。
import datetime data = cursor.fetchall() for col_index, col_name in enumerate(column_names): worksheet.write(0, col_index, col_name) for row_index, row_data in enumerate(data): for col_index, col_data in enumerate(row_data): if isinstance(col_data, datetime.datetime): col_data = col_data.strftime("%Y-%m-%d %H:%M:%S") worksheet.write(row_index + 1, col_index, col_data)
关闭游标、数据库连接和Excel文件对象
在数据导出完成后,记得关闭游标、数据库连接和Excel文件对象,释放资源。
cursor.close()
connection.close()
workbook.close()
总结
通过以上步骤,我们使用Python成功地将MySQL查询结果导出到Excel文件中。这种方法不仅简单方便,而且还可以轻松实现定制化的数据处理和格式化操作。
完整代码:
import pymysql import xlsxwriter import datetime # 建立数据库连接 connection = pymysql.connect( host='localhost', user='root', password='123456', database='caiwu' ) # 编写SQL查询语句 query = "SELECT * FROM report_品名" # 创建Excel文件对象 workbook = xlsxwriter.Workbook('output2.xlsx') # 创建Excel工作表对象 worksheet = workbook.add_worksheet() # 创建游标对象 cursor = connection.cursor() # 执行SQL查询 cursor.execute(query) # 获取查询结果的列名 column_names = [i[0] for i in cursor.description] # 将列名写入Excel文件的第一行 for col_index, col_name in enumerate(column_names): worksheet.write(0, col_index, col_name) # 获取查询结果中的数据 data = cursor.fetchall() # 将数据写入Excel文件中 for row_index, row_data in enumerate(data): for col_index, col_data in enumerate(row_data): # 判断数据类型是否为时间类型 if isinstance(col_data, datetime.datetime): col_data = col_data.strftime("%Y-%m-%d %H:%M:%S") # 将时间字段转换为字符串 worksheet.write(row_index + 1, col_index, col_data) # 关闭游标对象 cursor.close() # 关闭数据库连接 connection.close() # 关闭Excel文件对象 workbook.close()