求助用python从数据库取数据动态生成表格的方法

一、可使用的第三方库 python中处理excel表格,常用的库有xlrd(读excel)表、xlwt(写excel)表、openpyxl(可读写excel表)等。xlrd读数据较大的excel表时效率高于openpyxl,所以我在写脚本时就采用了xlrd和xlwt这两个库。介绍及下载地址为:http://www.python-excel.org/ 这些库文件都没有提供修改...
求助用python从数据库取数据动态生成表格的方法
一、可使用的第三方库
python中处理excel表格,常用的库有xlrd(读excel)表、xlwt(写excel)表、openpyxl(可读写excel表)等。xlrd读数据较大的excel表时效率高于openpyxl,所以我在写脚本时就采用了xlrd和xlwt这两个库。介绍及下载地址为:http://www.python-excel.org/ 这些库文件都没有提供修改现有excel表格内容的功能。一般只能将原excel中的内容读出、做完处理后,再写入一个新的excel文件。
二、常见问题
使用python处理excel表格时,发现两个个比较难缠的问题:unicode编码和excel中记录的时间。
因为python的默认字符编码都为unicode,所以打印从excel中读出的中文或读取中文名的excel表或sheet时,程序提示错误UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)。这是由于在windows中,中文使用了gb2312编码方式,python将其当作unicode和ascii来解码都不正确才报出的错误。使用VAR.encode('gb2312')即可解决打印中文的问题。(很奇怪,有的时候虽然能打印出结果,但显示的不是中文,而是一堆编码。)若要从中文文件名的excel表中读取数据,可在文件名前加‘u’表示将该中文文件名采用unicode编码。
有excel中,时间和日期都使用浮点数表示。可看到,当‘2013年3月20日’所在单元格使用‘常规’格式表示后,内容变为‘41353’;当其单元格格式改变为日期后,内容又变为了‘2013年3月20日’。而使用xlrd读出excel中的日期和时间后,得到是的一个浮点数。所以当向excel中写入的日期和时间为一个浮点数也不要紧,只需将表格的表示方式改为日期和时间,即可得到正常的表示方式。excel中,用浮点数1表示1899年12月31日。
三、常用函数
以下主要介绍xlrd、xlwt、datetime中与日期相关的函数。

import xlrd
import xlwt
from datetime

def testXlrd(filename):
book=xlrd.open_workbook(filename)
sh=book.sheet_by_index(0)
print "Worksheet name(s): ",book.sheet_names()[0]
print 'book.nsheets',book.nsheets
print 'sh.name:',sh.name,'sh.nrows:',sh.nrows,'sh.ncols:',sh.ncols
print 'A1:',sh.cell_value(rowx=0,colx=1)
#如果A3的内容为中文
print 'A2:',sh.cell_value(0,2).encode('gb2312')

def testXlwt(filename):
book=xlwt.Workbook()
sheet1=book.add_sheet('hello')
book.add_sheet('word')
sheet1.write(0,0,'hello')
sheet1.write(0,1,'world')
row1 = sheet1.row(1)
row1.write(0,'A2')
row1.write(1,'B2')

sheet1.col(0).width = 10000

sheet2 = book.get_sheet(1)
sheet2.row(0).write(0,'Sheet 2 A1')
sheet2.row(0).write(1,'Sheet 2 B1')
sheet2.flush_row_data()

sheet2.write(1,0,'Sheet 2 A3')
sheet2.col(0).width = 5000
sheet2.col(0).hidden = True

book.save(filename)

if __name__=='__main__':
testXlrd(u'你好。xls')
testXlwt('helloWord.xls')
base=datetime.date(1899,12,31).toordinal()
tmp=datetime.date(2013,07,16).toordinal()
print datetime.date.fromordinal(tmp+base-1).weekday()2017-10-30
mengvlog 阅读 11 次 更新于 2025-07-19 13:34:54 我来答关注问题0
  • 一、可使用的第三方库 python中处理excel表格,常用的库有xlrd(读excel)表、xlwt(写excel)表、openpyxl(可读写excel表)等。xlrd读数据较大的excel表时效率高于openpyxl,所以我在写脚本时就采用了xlrd和xlwt这两个库。介绍及下载地址为:http://www.python-excel.org/ 这些库文件都没有提供修改现...

  •  誉祥祥知识 Python如何使用fetchone()和fetchall()方法从MySQL数据库查询数据?

    在Python中,连接MySQL数据库并执行查询操作是常见的任务。有两种方法可以获取数据:fetchone()和fetchall()。fetchone()用于获取单条查询结果,而fetchall()则用于获取所有结果。rowcount属性是一个只读属性,它返回执行SQL语句后影响的行数,这对于追踪操作影响范围很有用。让我们通过一个实例来理解这些概...

  •  文暄生活科普 Python连接Oracle数据库并执行SQL查询,数据获取、关闭游标、查询列元数据等基础操作

    首先需要导入cx_Oracle库,建立数据库连接。python import cx_Oracle dsn = cx_Oracle.makedsn('主机名', '端口号', '服务名')conn = cx_Oracle.connect('用户名', '密码', dsn)执行SQL查询 借助`conn.cursor()`生成游标对象,并使用此对象执行SQL查询。python cursor = conn.cursor()cursor.e...

  • 选择“数据”>“连接到数据”或按键盘上的 Ctrl + D。也可以在开始页面上选择“连接到数据”选项。2. 在“连接到数据”页面上,选择要连接的数据类型。也可以选择保存的数据连接(TDS 文件)打开一个 Tableau Server 数据源。3. 连接到数据的另一种方式是从工作簿导入。工作簿可以包含与不同数据源...

  •  晓萌看世界 [银华富有基金]python同花顺股票及时数据!求教python量化买卖时用到的股票天天逐笔买卖数据若何爬取?

    保存数据:将抓取到的数据保存到本地文件(如CSV、Excel等)或数据库中,以便后续分析和处理。数据清洗:对抓取到的数据进行清洗和整理,去除无效或重复数据。数据分析:使用Python的数据分析库(如pandas、numpy等)对清洗后的数据进行统计分析、可视化等操作。注意事项:合法合规:在抓取数据时,务必遵守...

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部