天天看點

python輸出excel-python自動生成excel(xlwt庫)

# coding: utf-8import web

import json

import datetime

import xlwt

import StringIO

# 如果不在前端調用接口,如下web.py架構的urls和app、render可以省略

urls=( # web架構的路由"/index","Index","/home","Home",

)

app=web.aplication(urls, globals()) # 注冊應用

render= web.template.render("template") # 模闆,注意路徑

#如果不在前端調用接口,如上web.py架構的urls和app、render可以省略

# 這個類,僅僅傳回一個前端頁面,頁面裡面的按鈕使用ajax來請求下面其他接口,這個html内容我就不寫了class Index(object):

def GET(self):returnrender.mubanmingzi({})

# 生成Excel檔案class Excel(object):

def GET(self):

web.header("Content-type", "applicationvnd.ms-excel") # 請求頭,傳回指定内容

web.header("Transfer-Encoding", "chunked")

namedate=str(datetime.date.today())

# 設定使用者浏覽器生成excel檔案的名字

web.header("Content-Disposition", "attachment:filname={0}".format("Excel表" + namedate + "xls")

# 以上都不重要,僅供參考,如下是使用python的第三方庫xlwt來生成xecel檔案

wb= xlwt.Workbook(encoding="utf-8") # 建立工作簿對象

ws= wb.add_sheet("sheet") # 要寫入的sheet的名字,就是excel的工作台,不懂的可以去百度

bs=xlwt.Borders() # 建立邊框對象,用來指定表格邊框的樣式(粗細,虛線實作,顔色等)

bs.left=xlwt.Borders.THIN # 左側實線

bs.right=xlwt.Borders.THIN # 右側實線

bs.top=xlwt.Borders.THIN # 上邊實線

bs.bottom=xlwt.Boeders.THIN # 下邊實線

bs.left_colour=ox40 # 顔色

style=xlwt.XFStyle() # 建立樣式對象

style.borders=bs # 将設定好的bs樣式給style對象

# 下面開始往建立好的excel對象裡面寫入資料

# 我們将地0行的前5個格合并居中,用來寫入注意事項

# 前兩個0表示從0行到0行這個範圍,第3個0表示從第0列,4表示到第5列(行列索引都從0開始),最後一個值就是要寫入的内容了)

ws.write_merge(0,0,0,4,"這是寫入的内容")

# 設定表頭for i in range(5):

ws.write(1, i, "标題{0}".format(str(i))) # 5格,1表示第二行,i表示第二行的前5格,标題0-标題4沒别為每行内容

# 下面類似,寫入内容

row= 2# 第三行開始寫内容資料for i in range(10): # 寫入10行

ws.write(row,0, "内容1", style) # 内容寫入,邊框樣式生效

ws.write(row,1, "内容2", style)

ws.write(row,2, "内容3", style)

ws.write(row,3, "内容4", style)

ws.write(row,4, "内容5", style)

row+= 1# 指定每列的寬度

ws.col(0).width = 3999# 第0列

ws.col(1).width = 3999# 第1列

ws.col(4).width = 6999# 将資料流儲存到本地磁盤

sio=StringIO.StringIO() # 建立資料流

web.save(sio) # 注意,這裡儲存的是資料流,不是檔案名

sio.seek(0) # 光标,從0的位置開始寫入returnsio.getvalue() # 将生成檔案特效傳回到浏覽器,其實檔案已經儲存到電腦的下載下傳檔案内了。