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

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

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

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

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

  1. import xlrd
  2.  
  3. # 设置路径
  4. path = 'E:/input.xlsx'
  5. # 打开execl
  6. workbook = xlrd.open_workbook(path)
  7.  
  8. # 输出Excel文件中所有sheet的名字
  9. print(workbook.sheet_names())
  10.  
  11. # 根据sheet索引或者名称获取sheet内容
  12. Data_sheet = workbook.sheets()[0] # 通过索引获取
  13. # Data_sheet = workbook.sheet_by_index(0) # 通过索引获取
  14. # Data_sheet = workbook.sheet_by_name(u'名称') # 通过名称获取
  15.  
  16. print(Data_sheet.name) # 获取sheet名称
  17. rowNum = Data_sheet.nrows # sheet行数
  18. colNum = Data_sheet.ncols # sheet列数
  19.  
  20. # 获取所有单元格的内容
  21. list = []
  22. for i in range(rowNum):
  23. rowlist = []
  24. for j in range(colNum):
  25. rowlist.append(Data_sheet.cell_value(i, j))
  26. list.append(rowlist)
  27. # 输出所有单元格的内容
  28. for i in range(rowNum):
  29. for j in range(colNum):
  30. print(list[i][j], '\t\t', end="")
  31. print()
  32.  
  33. # 获取整行和整列的值(列表)
  34. rows = Data_sheet.row_values(0) # 获取第一行内容
  35. cols = Data_sheet.col_values(1) # 获取第二列内容
  36. # print (rows)
  37. # print (cols)
  38.  
  39. # 获取单元格内容
  40. cell_A1 = Data_sheet.cell(0, 0).value
  41. cell_B1 = Data_sheet.row(0)[1].value # 使用行索引
  42. cell_C1 = Data_sheet.cell(0, 2).value
  43. cell_D2 = Data_sheet.col(3)[1].value # 使用列索引
  44. print(cell_A1, cell_B1, cell_C1, cell_D2)
  45.  
  46. # 获取单元格内容的数据类型
  47. # ctype:0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
  48. print('cell(0,0)数据类型:', Data_sheet.cell(0, 0).ctype)
  49. print('cell(1,0)数据类型:', Data_sheet.cell(1, 0).ctype)
  50. print('cell(1,1)数据类型:', Data_sheet.cell(1, 1).ctype)
  51. print('cell(1,2)数据类型:', Data_sheet.cell(1, 2).ctype)
  52.  
  53. # 获取单元格内容为日期的数据
  54. date_value = xlrd.xldate_as_tuple(Data_sheet.cell_value(1,0),workbook.datemode)
  55. print(type(date_value), date_value)
  56. print('%d:%d:%d' % (date_value[0:3]))

3:创建excel并写入数据

  1. import xlwt
  2.  
  3. def set_style(name, height, bold=False):
  4. style = xlwt.XFStyle() # 初始化样式
  5. font = xlwt.Font() # 为样式创建字体
  6. font.name = name
  7. font.bold = bold
  8. font.color_index = 4
  9. font.height = height
  10.  
  11. style.font = font
  12. return style
  13.  
  14. def write_excel(path):
  15. # 创建工作簿
  16. workbook = xlwt.Workbook(encoding='utf-8')
  17. # 创建sheet
  18. data_sheet = workbook.add_sheet('demo')
  19. row0 = [u'字段名称', u'大致时段', 'CRNTI', 'CELL-ID']
  20. row1 = [u'测试', '15:50:33-15:52:14', 22706, 4190202]
  21. # 生成第一行和第二行
  22. for i in range(len(row0)):
  23. data_sheet.write(0, i, row0[i], set_style('Times New Roman', 220, True))
  24. data_sheet.write(1, i, row1[i], set_style('Times New Roman', 220, True))
  25.  
  26. # 保存文件
  27. # workbook.save('demo.xls')
  28. workbook.save(path)
  29.  
  30. if __name__ == '__main__':
  31. # 设置路径
  32. path = 'E:/demo.xls'
  33. write_excel(path)
  34. 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表示单元格样式
  1. """
  2. 设置单元格样式
  3. """
  4. import xlwt
  5.  
  6. def set_style(font_name, font_height, bold=False):
  7. style = xlwt.XFStyle() # 初始化样式
  8.  
  9. font = xlwt.Font() # 为样式创建字体
  10. font.name = font_name # 'Times New Roman'
  11. font.bold = bold
  12. font.color_index = 4
  13. font.height = font_height
  14.  
  15. borders = xlwt.Borders()
  16. borders.left = 6
  17. borders.right = 6
  18. borders.top = 6
  19. borders.bottom = 6
  20.  
  21. style.font = font
  22. style.borders = borders
  23.  
  24. return style
  25.  
  26. # 写excel
  27. def write_excel(output_path):
  28. f = xlwt.Workbook() # 创建工作簿
  29. '''
  30. 创建第一个sheet:
  31. sheet1
  32. '''
  33. sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) # 创建sheet
  34. row0 = [u'业务',u'状态',u'北京',u'上海',u'广州',u'深圳',u'状态小计',u'合计']
  35. column0 = [u'机票',u'船票',u'火车票',u'汽车票',u'其它']
  36. status = [u'预订',u'出票',u'退票',u'业务小计']
  37. # 生成第一行
  38. for i in range(0, len(row0)):
  39. sheet1.write(0, i, row0[i], set_style('Times New Roman', 220, True))
  40.  
  41. # 生成第一列和最后一列(合并4行)
  42. i, j = 1, 0
  43. while i < 4*len(column0) and j < len(column0):
  44. sheet1.write_merge(i, i+3, 0, 0, column0[j], set_style('Arial', 220, True)) # 第一列
  45. sheet1.write_merge(i, i+3, 7, 7) # 最后一列"合计"
  46. i += 4
  47. j += 1
  48.  
  49. sheet1.write_merge(21,21,0,1,u'合计',set_style('Times New Roman',220,True))
  50.  
  51. # 生成第二列
  52. i = 0
  53. while i < 4*len(column0):
  54. for j in range(0,len(status)):
  55. sheet1.write(j+i+1, 1, status[j])
  56. i += 4
  57.  
  58. f.save(output_path)
  59.  
  60. if __name__ == '__main__':
  61. write_excel('E:/demo.xls') # 保存文件.这里如果是.xlsx的话会打不开。

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

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

生成的demo.xls效果如下:

Python3 读、写Excel文件的更多相关文章

  1. Python小实验——读&写Excel文件内容

    安装xlrd模块和xlwt模块 读取Excel文件了内容需要额外的模块-- \(xlrd\),在官网上可以找到下载:https://pypi.python.org/pypi/xlrd#download ...

  2. Pandas 基础(4) - 读/写 Excel 和 CSV 文件

    这一节将分别介绍读/写 Excel 和 CSV 文件的各种方式: - 读入 CSV 文件 首先是准备一个 csv 文件, 这里我用的是 stock_data.csv, 文件我已上传, 大家可以直接下载 ...

  3. openpyxl -用于读/写Excel 2010 XLSX/XLSM文件的python库

    openpyxl -用于读/写Excel 2010 XLSX/XLSM文件的python库¶ https://www.osgeo.cn/openpyxl/index.html

  4. Java使用jxl.jar包写Excel文件的最适合列宽问题基本实现

    以前用jxl.jar包,读写过Excel文件.也没有注意最适合列宽的问题,但是jxl.jar没有提供最适合列宽的功能,上次用到写了一下,可以基本实现最适合列宽. 注意,这个只是基本可以实现,基本针对中 ...

  5. 使用Python xlwt写excel文件

    如果需要使用Python写Excel文件,首先下载或者安装xlwt. pip install xlwt 下面的这些demo应该可以帮助开发者快速上手使用xlwt写Excel文件: 创建工作簿(work ...

  6. 在Delphi中通过OLE方式写Excel文件

    报表的打印是每个项目都会遇到的问题.由于报表格式要求五花八门,往往又同时要求打印格式可方便调整.作为一种替代方法,可以将需要打印的报表导出到Excel/Word,打印交给Office去吧.由于Offi ...

  7. 自学python3随笔--连接数据库和写EXCEL文件实现

    近日在自学python3,选择python,是由于它命令比较简单,语法也不算复杂,对我来说,要实现的功能用100行语句就能够实现.另外,一个原因,它是脚本形式的,调试比较方便,对我这些有很长时间没有写 ...

  8. python读、写、修改、追写excel文件

    三个工具包 python操作excel的三个工具包如下 xlrd: 对excel进行读相关操作 xlwt: 对excel进行写相关操作 xlutils: 对excel读写操作的整合 注意,只能操作.x ...

  9. JAVA读、写EXCEL文件

    採用jxl.jar包,网上下载,百度一下到出都是.希望能够帮助到大家. 接下来直接贴代码: <span style="font-size:18px;"> public ...

随机推荐

  1. thinkphp error:no database select

    配置正确,项目运行时确出现,no database selected . 解决方法: 需要清除 /App/Runtime  runtime~.php文件

  2. Python基础( )

    一. 文件修改 f = open("yesterday.txt",'r') f1 = open("yesterday2.txt",'w') for line i ...

  3. 【NOI2005】 聪聪可可

    树分治劲啊 原题: 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了, ...

  4. 【maven】maven源码打包

    1.打包时附加外部Jar包 <!--编译+外部 Jar打包-->          <plugin>            <artifactId>maven-co ...

  5. python简单实现目录对比

    [root@localhost python]# cat dircmptest.py #!/usr/bin/python import filecmp path1="/root/python ...

  6. Properties 类的使用

    定义: 表示一个持久的集合,可以存在流中,或者从流中加载.是Hashtable子类,map集合方法都可以用. 方法的使用: /* * 集合对象 properties继承Hashtable实现了Map接 ...

  7. ipfs cluster 模式部署使用(docker-compose 环境运行)

    ipfs 点对点的分布式文件系统,官方提供了集群模式运行的docker 镜像,以及docker-compose 文件 所以测试下 环境准备 docker-compose   version: '3.4 ...

  8. Java高级特性 第3节 java中常用的实用类(2)

    §String类 一.创建字符串对象 采用字面值的方式赋值:String s = "abc"; 用new关键字:String s = new String("vfggkf ...

  9. MINA线程模型

    一.三种工作线程: (一) Acceptor  thread: 该线程的作用是接收客户端的连接,并将客户端的连接导入到IOProcessor线程模型中.Acceptor thread在调用了Accep ...

  10. toString() 和 toLocaleString() 的区别

    toString() 和 toLocaleString() 的区别 table th:nth-of-type(4) { width: 400px; } 区别项 toString() toLocaleS ...