首先,简单介绍一下EXECL中工作簿和工作表的区别:

工作簿的英文是BOOK(WORKBOOK),工作表的英文是SHEET(WORKSHEET)。

  • 一个工作簿就是一个独立的文件
  • 一个工作簿里面可以有1个或者多个工作表
  • 工作簿是工作表的集合

1:使用python实现对Excel文件的读写,首先需要安装专用的模块(可以自己编写)xlrd,xlwt模块

2:读取excel数据(注意事项:sheet编号,行号,列号都是从索引0开始)

 import xlrd

 # 设置路径
path = 'E:/input.xlsx'
# 打开execl
workbook = xlrd.open_workbook(path) # 输出Excel文件中所有sheet的名字
print(workbook.sheet_names()) # 根据sheet索引或者名称获取sheet内容
Data_sheet = workbook.sheets()[0] # 通过索引获取
# Data_sheet = workbook.sheet_by_index(0) # 通过索引获取
# Data_sheet = workbook.sheet_by_name(u'名称') # 通过名称获取 print(Data_sheet.name) # 获取sheet名称
rowNum = Data_sheet.nrows # sheet行数
colNum = Data_sheet.ncols # sheet列数 # 获取所有单元格的内容
list = []
for i in range(rowNum):
rowlist = []
for j in range(colNum):
rowlist.append(Data_sheet.cell_value(i, j))
list.append(rowlist)
# 输出所有单元格的内容
for i in range(rowNum):
for j in range(colNum):
print(list[i][j], '\t\t', end="")
print() # 获取整行和整列的值(列表)
rows = Data_sheet.row_values(0) # 获取第一行内容
cols = Data_sheet.col_values(1) # 获取第二列内容
# print (rows)
# print (cols) # 获取单元格内容
cell_A1 = Data_sheet.cell(0, 0).value
cell_B1 = Data_sheet.row(0)[1].value # 使用行索引
cell_C1 = Data_sheet.cell(0, 2).value
cell_D2 = Data_sheet.col(3)[1].value # 使用列索引
print(cell_A1, cell_B1, cell_C1, cell_D2) # 获取单元格内容的数据类型
# ctype:0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
print('cell(0,0)数据类型:', Data_sheet.cell(0, 0).ctype)
print('cell(1,0)数据类型:', Data_sheet.cell(1, 0).ctype)
print('cell(1,1)数据类型:', Data_sheet.cell(1, 1).ctype)
print('cell(1,2)数据类型:', Data_sheet.cell(1, 2).ctype) # 获取单元格内容为日期的数据
date_value = xlrd.xldate_as_tuple(Data_sheet.cell_value(1,0),workbook.datemode)
print(type(date_value), date_value)
print('%d:%d:%d' % (date_value[0:3]))

3:创建excel并写入数据

import xlwt

def set_style(name, height, bold=False):
style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = name
font.bold = bold
font.color_index = 4
font.height = height style.font = font
return style def write_excel(path):
# 创建工作簿
workbook = xlwt.Workbook(encoding='utf-8')
# 创建sheet
data_sheet = workbook.add_sheet('demo')
row0 = [u'字段名称', u'大致时段', 'CRNTI', 'CELL-ID']
row1 = [u'测试', '15:50:33-15:52:14', 22706, 4190202]
# 生成第一行和第二行
for i in range(len(row0)):
data_sheet.write(0, i, row0[i], set_style('Times New Roman', 220, True))
data_sheet.write(1, i, row1[i], set_style('Times New Roman', 220, True)) # 保存文件
# workbook.save('demo.xls')
workbook.save(path) if __name__ == '__main__':
# 设置路径
path = 'E:/demo.xls'
write_excel(path)
print(u'创建demo.xls文件成功')

再看一个例子:

转载:Ryan in C++

基本的write函数接口很简单:

  • 新建一个excel文件:                                                 file = xlwt.Workbook() (注意这里的Workbook首字母是大写)
  • 新建一个sheet:                                                        table = file.add_sheet('sheet_name')
  • 写入数据table.write(行,列,value):                            table.write(0,0,'test')
  • 如果是写入中文,则要用u'汉字'的形式。比如:       table.write(0,0, u'汉字')
  • 合并单元格:                                                             table.write_merge(x, x + m, y, y + n, string, style)
  • x表示行,y表示列,m表示跨行个数,n表示跨列个数,string表示要写入的单元格内容,style表示单元格样式
 """
设置单元格样式
"""
import xlwt def set_style(font_name, font_height, bold=False):
style = xlwt.XFStyle() # 初始化样式 font = xlwt.Font() # 为样式创建字体
font.name = font_name # 'Times New Roman'
font.bold = bold
font.color_index = 4
font.height = font_height borders = xlwt.Borders()
borders.left = 6
borders.right = 6
borders.top = 6
borders.bottom = 6 style.font = font
style.borders = borders return style # 写excel
def write_excel(output_path):
f = xlwt.Workbook() # 创建工作簿
'''
创建第一个sheet:
sheet1
'''
sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) # 创建sheet
row0 = [u'业务',u'状态',u'北京',u'上海',u'广州',u'深圳',u'状态小计',u'合计']
column0 = [u'机票',u'船票',u'火车票',u'汽车票',u'其它']
status = [u'预订',u'出票',u'退票',u'业务小计']
# 生成第一行
for i in range(0, len(row0)):
sheet1.write(0, i, row0[i], set_style('Times New Roman', 220, True)) # 生成第一列和最后一列(合并4行)
i, j = 1, 0
while i < 4*len(column0) and j < len(column0):
sheet1.write_merge(i, i+3, 0, 0, column0[j], set_style('Arial', 220, True)) # 第一列
sheet1.write_merge(i, i+3, 7, 7) # 最后一列"合计"
i += 4
j += 1 sheet1.write_merge(21,21,0,1,u'合计',set_style('Times New Roman',220,True)) # 生成第二列
i = 0
while i < 4*len(column0):
for j in range(0,len(status)):
sheet1.write(j+i+1, 1, status[j])
i += 4 f.save(output_path) if __name__ == '__main__':
write_excel('E:/demo.xls') # 保存文件.这里如果是.xlsx的话会打不开。

注意:如果对一个单元格重复操作,会引发error。所以在打开时加cell_overwrite_ok=True解决

table = file.add_sheet('sheet name',cell_overwrite_ok=True)

生成的demo.xls效果如下:

最新文章

  1. [No000054] Windows 下Python3.5, NoteBook增强版安装
  2. 单据UI代码开发
  3. phpMyAdmin上传文件大小限制
  4. 【JSP】JSP基础学习记录(二)—— JSP的7个动作指令
  5. 深入剖析jsonp跨域原理
  6. java对象实例化
  7. openstack deug
  8. redis linux 基本命令
  9. python MySQLdb、socket与进线程
  10. lambda语法
  11. Windows.Server.2003.R2 简体中文企业版 x86 x64(转)
  12. Jquery学习笔记:利用find和children方法获取后代元素
  13. Activiti常见问题解决
  14. Leetcode_116_Populating Next Right Pointers in Each Node
  15. UMD模式的js
  16. Python爬虫使用MD5加密的坑
  17. C++ 中 int 与string相互转换
  18. 网站性能工具-YSlow的23个规则-网站性能优化
  19. golang channel的使用
  20. Quartz调用大全

热门文章

  1. 内存池技术(UVa 122 Tree on the level)
  2. scripy
  3. 初识Odoo的辅助核算
  4. [Wannafly挑战赛28][B msc和mcc][预处理+枚举]
  5. LeetCode–Flip Game
  6. mac-ppt-auto-open-recovery-files
  7. Centos7提示swap交换空间不足解决方法
  8. shell基础入门(一)
  9. XML基础入门
  10. C# Winform 怎么让按钮在Panel里居中显示