python 操作excel 使用笔记
写入excel, 保存的过程中需要注意,保存格式xls后缀,如果用xlsx会报错
def set_style(name,height,bold=False):
""""""
import xlwt
style = xlwt.XFStyle() # 初始化样式 font = xlwt.Font() # 为样式创建字体
font.name = name # 'Times New Roman'
font.bold = bold
font.color_index = 4
font.height = height # borders= xlwt.Borders()
# borders.left= 6
# borders.right= 6
# borders.top= 6
# borders.bottom= 6 style.font = font
# style.borders = borders return style def write_excel(rows=[{}]):
""""""
try:
import xlwt book = xlwt.Workbook()
# sheet1 = book.add_sheet('Sheet 1')
# sheet1.write(0,0,'AAAAAAAAA1')
# book.save("demo1.xls") # 保存文件
sheet1 = book.add_sheet(u'sheet1', cell_overwrite_ok=True) # 创建sheet1
row0 = [u"证书编号", u"执行结果"]
for i, row in enumerate(row0):
sheet1.write(0, i, str_unicode(row0[i]), set_style('Times New Roman', 220, True))
for i, row in enumerate(rows):
sheet1.write(i+1, 0, str_unicode(row[0]))
sheet1.write(i+1, 1, str_unicode(row[2]))
now = datetime.datetime.now()
new_file_dir = '%s/%s' % ('temp_excel', now.strftime("%Y/%m/%d"))
new_file_name = fileutil.reset_file_name('demo1.xls') # 重命名文件
xls_name = fileutil.get_absolute_file_path(new_file_name, new_file_dir)
book.save(xls_name) # 保存文件
relative_xls_name = xls_name.split(settings.MEDIA_ROOT)[1]
relative_xls_name = "/upload_media/%s" % relative_xls_name
return relative_xls_name
except Exception, e:
log.error("card_write_excel:%s" % e)
print e
return ""
读取excel
from django.utils.encoding import smart_str, smart_unicode
import xlrd def str_encode(s, encoding="utf-8"):
""""""
code_s = s
try:
code_s = smart_str(s, encoding=encoding)
except Exception, e:
code_s = smart_unicode(s, encoding=encoding)
return code_s def str_unicode(s, encoding="utf-8"):
""""""
code_s = s
try:
code_s = smart_unicode(s, encoding=encoding)
except Exception, e:
code_s = smart_str(s, encoding=encoding)
return code_s def read_excel(request):
""""""
xls_name = request.POST.get("excel", '')
extract_name = request.POST.get("zip", "") # 读取远程文件
# response = urllib2.urlopen(file_url, timeout=0.2)
# content = response.read()
# book = xlrd.open_workbook(file_contents=content) # 读取本地文件
xls_name = fileutil.get_absolute_file_path(xls_name)
book = xlrd.open_workbook(filename=xls_name) sheet = book.sheets()[0]
rows = []
for i in xrange(1, sheet.nrows):
row = Struct()
row.line = i + 1
row.type_id = str_encode(sheet.cell(i, 0).value)
row.card_no = str(str_encode(str(sheet.cell(i, 1).value)))
row.card_id = str_encode(sheet.cell(i, 2).value)
row.user_name = str_encode(sheet.cell(i, 3).value)
row.spell_name = str_encode(sheet.cell(i, 4).value)
row.level = str_encode(sheet.cell(i, 5).value)
row.title = str_encode(sheet.cell(i, 6).value)
row.ftitle = str_encode(sheet.cell(i, 7).value)
row.ability = str_encode(sheet.cell(i, 8).value)
rows.append(row)
print rows
.
python 操作excel 使用笔记的更多相关文章
- python学习笔记(八)python操作Excel
一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的 ...
- python学习笔记(十八)python操作excel
python操作excel需要安装通过pip安装xlwt, xlrd这两个模块: pip install xlwt pip insall xlrd 操作excel ,写入excel: import x ...
- python操作excel表格(xlrd/xlwt)
最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...
- Python操作Excel
一.系统性学习 对于操作Excel,需要Xlrd/xlwt这两个模块,下面推荐出系统性学习的网址: python操作Excel读写--使用xlrd 官方文档 Python 使用 Xlrd/xlwt 操 ...
- Python操作excel(xlrd和xlwt)
Python操作excel表格有很多支持的库,例如:xlrd.xlwt.openpyxl.win32com,下面介绍使用xlrd.xlwt和xlutils模块这三个库不需要其他的支持,在任何操作系统上 ...
- Python操作excel表格
用Python操作Excel在工作中还是挺常用的,因为毕竟不懂Excel是一个用户庞大的数据管理软件 注:本篇代码在Python3环境下运行 首先导入两个模块xlrd和xlwt,xlrd用来读取Exc ...
- Python 利用Python操作excel表格之openyxl介绍Part2
利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart() ...
- Python 利用Python操作excel表格之openyxl介绍Part1
利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436),免费获取以下性能监控工具(类似Nmon精简版) ...
- 【转】python操作excel表格(xlrd/xlwt)
[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异, ...
随机推荐
- hadoop启动后jps没有namenode(转)
hadoop启动后jps没有namenode 一般都是由于两次或两次以上格式化NameNode造成的,有两种方法可以解决: 1.删除DataNode的所有资料 2.修改每个DataNode的names ...
- php 面向对象要点汇总
//类和对象//对象:一切东西都可以看做对象,对象是类的实例化.//类:类是对象的抽象,用来描述众多对象共有的特征. //定义类 class//成员变量 和 成员方法//访问修饰符 public共有的 ...
- duilib WindowImplBase BUG修复 --- 按一次ESC键, 关闭多个窗口
BUG造成的影响 继承自WindowImplBase的窗口类, 如果没有重写重写ResponseDefaultKeyEvent而由WindowImplBase默认处理的话, 会导致按一次有ESC键, ...
- POJ 2299 逆序对
Crossings Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463 Description I ...
- Hark的数据结构与算法练习之图书馆排序
算法说明 图书馆排序是插入排序的变种,典型的以空间换时间的一种方法.我个人感觉这种思路可以学习借鉴,但直接使用的场景应该不大. 我们知道,真正的插入排序通常往前边插入元素后,我们要把后边所有的元素后移 ...
- 寒假 D3 D Modular Inverse
Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB ...
- MVC RenderSection
简要使用介绍 @RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section. 在母版页_Layout.cshtml中定义@RenderSection(" ...
- 排列组合[HDU1521]
排列组合 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- ! cocos2d 同一个sprite的触控问题
如果对一个A sprite添加触控,然后在一个场景中创建四个A的实例,那么1234逐个添加的话,只有最后一个会被点击到.其他的将不会响应.
- iScroll5 API速查随记
版本 针对iScroll的优化.为了达到更高的性能,iScroll分为了多个版本.你可以选择最适合你的版本.目前我们有以下版本: iscroll.js,这个版本是常规应用的脚本.它包含大多数常用的功能 ...