半瓶子酱油

身是菩提树 心如明镜台 时时勤拂拭 莫使惹尘埃

  • 博客访问: 380058
  • 博文数量: 67
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-02 09:20
个人简介

不忘初心,方得始终

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(67)

文章存档

2016年(9)

2015年(45)

2014年(13)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
友情链接
Python读写Excel 2015-02-25 22:23:55

分类: 开源技术

xlrd模块读取excel

处理流程

1. 导入模块
2. 打开Excel文件读取数据
3. 获取一个工作表
sheet = book.sheets()[0]          #通过索引顺序获取
sheet = book.sheet_by_index(0) #通过索引顺序获取
sheet = book.sheet_by_name(u'Sheet1')#通过名称获取

4.获取整行和整列的值(数组)
sheet.row_values(i)
sheet.col_values(i)

5.获取行数和列数
nrows = sheet.nrows
ncols = sheet.ncols

6.循环行列表数据
for i in range(nrows ):
  print table.row_values(i)

7.获取单元格
cell_A1 = table.cell(0,0).value 
cell_A1 = table.row(0)[0].value
cell_C4 = table.cell(2,3).value
cell_A2 = table.col(2)[3].value

8.简单的写入
row = 0 
col = 0 
# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
ctype = 1 
value = '单元格的值' 
xf = 0 # 扩展的格式化 
table.put_cell(row, col, ctype, value, xf) 
table.cell(0,0)       #单元格的值'
table.cell(0,0).value #单元格的值'

xlwt模块写入excel

处理流程

1. 导入xlwt模块
2. 新建一个excel文件
file = xlwt.Workbook()
3. 新建一个sheet
table = file.add_sheet('sheet name')

4. 写入数据table.write(行,列,value)
table.write(0,0,'test')
如果对一个单元格重复操作,会引发
returns error:
# Exception: Attempt to overwrite cell:
# sheetname=u'sheet 1' rowx=0 colx=0
所以在打开时加cell_overwrite_ok=True解决
table = file.add_sheet('sheet name',cell_overwrite_ok=True)

5. 保存文件
file.save('demo.xls')

6.其它使用style
style = xlwt.XFStyle() #初始化样式
font = xlwt.Font()     #为样式创建字体
font.name = 'Times New Roman'
font.bold = True
style.font = font    #为样式设置字体
table.write(0, 0, 'some bold Times text', style) # 使用样式

xlwt 允许单元格或者整行地设置格式。还可以添加链接以及公式。可以阅读源代码,那里有例子:
dates.py, 展示如何设置不同的数据格式
hyperlinks.py, 展示如何创建超链接 (hint: you need to use a formula)
merged.py, 展示如何合并格子
row_styles.py, 展示如何应用Style到整行格子中.

示例demo

# -*- coding:utf-8 -*-
#!/usr/bin/python
'''
Script Name     : parsexls.py
Author          : svoid
Created            : 2015-02-25
Last Modified    : 
Version            : 1.0
Modifications    : 
Description    : 处理读写Excel
'''

import xlrd     #读取Excel
import xlwt     #写入Excel
import codecs
import os

'''
Description        :读取Excel内容并保存到文本文件中
@param textfilename:写入文本文件
@param xlsname     :读取Excel文件
@return 无
'''
def readxls(excelName,textfilename):
  #打开Excel文件读取数据
  book = xlrd.open_workbook(excelName)
  for i in range(len(book.sheets())):
    sheet = book.sheets()[i]
    nrows = sheet.nrows     #读取工作页行数
    ncols = sheet.ncols     #读取工作页列数
    for i in range(nrows):
      info = ''
      for j in range(len(sheet.row_values(i))):
        if isinstance(sheet.row_values(i)[j],(int,float,complex)):
          info += str(int(sheet.row_values(i)[j]))+'\t'
        else:
          info += sheet.row_values(i)[j]+'\t'
      print(info)
      saveFile(textfilename,info)

'''
Description    : 将数据按行保存到文件中
@param savefilename:保存文件内容文本文件
@param data :需要保存的数据
@return 无
'''
def saveFile(savefilename,data):
  f=codecs.open(savefilename,"a","utf-8")
  f.writelines(data)
  f.writelines('\n')
  f.close()

'''
Description    : 文本转换成Excel的函数
@param filename:输入文本文件
@param excelName :输出Excel文件
@return 无
'''
def txt2xls(filename,excelName):
  f = codecs.open(filename,'r','gbk')
  x = 0
  y = 0
  xls = xlwt.Workbook()
  sheet = xls.add_sheet('个人信息',cell_overwrite_ok=True)
  while True:
    line = f.readline()    #读取文本行内容
    print(line)
    if not line :
      break
    for i in line.split('\t'):
      item = i.strip()
      sheet.write(x,y,item)
      y += 1
    x += 1
    y = 0

  f.close()   #读取完成之后关闭文件
  xls.save(excelName)

if __name__ == '__main__':

  readxls("D:\\test.xlsx","D:\\test.txt")
  txt2xls("D:\\test1.txt","D:\\test1.xls")

整理自网络

svoid
2015-02-25

阅读(1737) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册