使用xlwt生成Excel2003的class,xlwtexcel2003,# coding: ut
# coding: utf-8# xlswriter.pyfrom xlwt import *from schconst import *class XLSWriter(object): """A XLS writer that produces XLS files from unicode data. """ def __init__(self, file, encoding='utf-8'): # must specify the encoding of the input data, utf-8 default. self.file = file self.encoding = encoding self.wbk = Workbook() self.sheets = {} self.font = Font() self.alignment = Alignment() self.borders = Borders() self.xfstyle = XFStyle() self.xstyle = easyxf('alignment:horz center,vert center;font: colour red, bold False;borders:left 0x01,right 0x01,top 0x01,bottom 0x01;') self.vstyle = easyxf('alignment:horz center,vert center;font: colour black, bold False;borders:left 0x01,right 0x01,top 0x01,bottom 0x01;') self.ostyle = easyxf('alignment:horz center,vert center;font: colour black, bold True;borders:left 0x01,right 0x01,top 0x01,bottom 0x01;') #创建sheet def create_sheet(self, sheet_name='sheet'): """Create new sheet """ if sheet_name in self.sheets: sheet_index = self.sheets[sheet_name]['index'] + 1 else: sheet_index = 0 self.sheets[sheet_name] = {'header': []} self.sheets[sheet_name]['index'] = sheet_index self.sheets[sheet_name]['sheet'] = self.wbk.add_sheet('%s%s' % (sheet_name, sheet_index if sheet_index else ''), cell_overwrite_ok=True) self.sheets[sheet_name]['rows'] = 1 #添加单元格 def cell(self, s): if isinstance(s, basestring): if not isinstance(s, unicode): s = s.decode(self.encoding) elif s is None: s = '' else: s = str(s) return s #设定单元格样式 可选择内容是否加粗 def cellstyle(self): #设定字体 self.font.name = 'Verdana' self.font.bold = True #设定居中 self.alignment.horz = Alignment.HORZ_CENTER self.alignment.vert = Alignment.VERT_CENTER #设定边线 self.borders.left = 0x01 self.borders.right = 0x01 self.borders.top = 0x01 self.borders.bottom = 0x01 #定义样式 self.xfstyle.alignment = self.alignment self.xfstyle.font = self.font self.xfstyle.borders = self.borders return self.xfstyle #添加非合并的单元格 def writerow(self, row, sheet_name='sheet'): if sheet_name not in self.sheets: self.create_sheet(sheet_name) if self.sheets[sheet_name]['rows'] >= 65534: self.save() self.create_sheet(sheet_name) for ci, col in enumerate(row): if col == TRM_STATUS_OFFLINE: self.sheets[sheet_name]['sheet'].write(self.sheets[sheet_name]['rows'], ci, self.cell(col) ,self.xstyle) elif col == TRM_STATUS_ONLINE: self.sheets[sheet_name]['sheet'].write(self.sheets[sheet_name]['rows'], ci, self.cell(col) if type(col) != ExcelFormula.Formula else col,self.vstyle) else: self.sheets[sheet_name]['sheet'].write(self.sheets[sheet_name]['rows'], ci, self.cell(col) if type(col) != ExcelFormula.Formula else col,self.ostyle) self.sheets[sheet_name]['rows'] += 1 #添加合并的单元格 def writemergerow(self, merge_value='', sheet_name='sheet',row1=0,row2=0,column1=0,column2=0): if sheet_name not in self.sheets: # Create if does not exist self.create_sheet(sheet_name) self.sheets[sheet_name]['sheet'].write_merge(row1, row2, column1, column2, merge_value,self.cellstyle()) self.sheets[sheet_name]['sheet'].col(1).width = 0x0d00 #添加多行单元格 def writerows(self, rows, sheet_name='sheet'): if rows == None: return for row in rows: self.writerow(row, sheet_name) #保存文件 def save(self): self.wbk.save(self.file)#测试数据#if __name__ == '__main__':# # test# xlswriter = XLSWriter(u'长沙.xls')# xlswriter.writemergerow(merge_value= u'日期',sheet_name=u'基本信息',row1=0, row2=0, column1=0, column2=0)# xlswriter.writemergerow(merge_value= '2013-12',sheet_name=u'基本信息',row1=0, row2=0, column1=1, column2=1)# xlswriter.writemergerow(merge_value= '2013-12-01',sheet_name=u'基本信息',row1=0, row2=0, column1=2, column2=4)# xlswriter.writerow(['终端名', '在线/次数', '早', '中', '晚'], sheet_name=u'基本信息')# xlswriter.writerow(['TRM01', '10/93', 'V', 'V', 'X'], sheet_name=u'基本信息')# xlswriter.writerow(['TRM02', '10/93', 'V', 'V', 'X'], sheet_name=u'基本信息')# xlswriter.writerow(['TRM03', '10/93', 'V', 'V', 'X'], sheet_name=u'基本信息') # don't forget to save data to disk# xlswriter.save()# print 'finished.'
评论关闭