我正在使用pyodbc连接到MS SQL server。此外,我正试图使用openpyxl写入excel2007/10.xlsx文件。在
这是我的代码(Python2.7):import pyodbc
from openpyxl import Workbook
cnxn = t(host = 'xxx',database='yyy',user='zzz',password='ppp')
cursor = cnxn.cursor()
sql = "SELECT TOP 10 [customer clientcode] AS Customer,
[customer dchl] AS DChl,
[customer name] AS Name,
...
[name3] AS [name 3]
FROM mydb
WHERE [customer dchl] = '03'
ORDER BY [customer id] ASC"
#load data
#get colnames from openpyxl
columns = [column[0] for column in cursor.description]
#using optimized_write cause it will be about 120k rows of data
wb = Workbook(optimized_write = True, encoding='utf-8')
ws = wb.create_sheet()
ws.title = '03'
#append column names to header
ws.append(columns)
#append rows to
for row in cursor:
ws.append(row)
wb.save(filename = 'test.xlsx')
cnxn.close()
这个有效,至少在我遇到一个客户之前,例如,名字:"mún"。我的代码没有失败,一切都写入Excel,一切都很好。直到我真正打开Excel文件-这会导致一个错误,说文件已损坏,需要修复。修复文件后,所有数据都将丢失。在
我知道这段代码适用于有固定名字(只有ASCII)的客户,只要有重音字符或任何东西,Excel文件就会被破坏。在
我试图打印一行(有一个困难的客户。名称)。结果是:
row是一个元组,这是一个索引:'Meexf9s Tilburg'所以写xf9 (ú)字符会导致错误,或者MS Excel无法处理它。我尝试过将一行编码为unicode(unicode(row,'utf-8')或{})等多种编码方式,但都没有任何效果。要么我尝试了一些愚蠢的东西导致错误,要么Excel文件仍然错误。在
有什么想法吗?在
本文发布于:2024-01-31 20:54:35,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170670567631289.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |