python连接Microsfot Sqlserver数据库查询结果保存为excel并自适应列宽加边框居中

首要具备条件:pycharm、python 3以上版本,便于引用该代码依自身实际情况调试;运行python主机安装有office 2007以上版本软件;安装python odbc for sql server,附odbc支持对应sql server版本信息如下:

{SQL Server} - released with SQL Server 2000

{SQL Native Client} - released with SQL Server 2005 (also known as version 9.0)

{SQL Server Native Client 10.0} - released with SQL Server 2008

{SQL Server Native Client 11.0} - released with SQL Server 2012

{ODBC Driver 11 for SQL Server} - supports SQL Server 2005 through 2014

{ODBC Driver 13 for SQL Server} - supports SQL Server 2005 through 2016

{ODBC Driver 13.1 for SQL Server} - supports SQL Server 2008 through 2016

{ODBC Driver 17 for SQL Server} - supports SQL Server 2008 through 2019 (depending on minor version)

{ODBC Driver 18 for SQL Server} - supports SQL Server 2012 through 2019

备注:df = pd.read_sql("select * from EXTENSION", conn)依实际情况修改为自身需要的查询语句;同时查询结果excel保存路径和名称依自身情况而进行修改。

实现代码如下(应用成功实例windows sql server 2012):

import pandas as pd

import xlsxwriter

import pyodbc

import time

server = 'MS数据库IP地址'

database = '数据库库名'

username = '用户名'

password = '密码'

driver= '{ODBC Driver 17 for SQL Server}'

with pyodbc.connect('DRIVER='+driver+';SERVER=tcp:'+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password) as conn:

with pd.ExcelWriter(r"C:\Users\public.DESKTOP-0HSVIBN\Documents\output.xlsx", engine="xlsxwriter",engine_kwargs={"options": {"strings_to_numbers": True,"strings_to_formulas": False}}) as writer:

try:

df = pd.read_sql("select * from EXTENSION", conn)

df.to_excel(writer, sheet_name = "Sheet1", header = True, index = False)

print("File saved successfully!")

except:

print("There is an error")

conn.close()

time.sleep(10)

import xlwings as xw

app=xw.App(visible=True,add_book=False)

app.display_alerts=False

app.screen_updating=False

wb=app.books.open(r'C:\Users\public.DESKTOP-0HSVIBN\Documents\output.xlsx')

sht = wb.sheets.active

value = sht.range('A1').expand('table')

wb.sheets['Sheet1'].autofit(axis='c')

wb.sheets['Sheet1'].autofit(axis='r')

value.api.HorizontalAlignment = xw.constants.HAlign.xlHAlignCenter

value.api.VerticalAlignment = xw.constants.VAlign.xlVAlignCenter

ws = wb.sheets['Sheet1']

last_column = ws.range(1, 1).end('right').get_address(0, 0)[0]

last_row = ws.range(1, 1).end('down').row

a_range = f'A1:{last_column}{last_row}'

ws.range(a_range).api.Borders.LineStyle = 1

wb.save(r'C:\Users\public.DESKTOP-0HSVIBN\Documents\output_fit.xlsx')

wb.close()

app.quit()

您的支持与鼓励,是我前行的动力;希望可以解决您的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值