应用python将大气数目导出到Excel中的小技巧分享,读写操作Excel

问题:行使python操作Excel,哪个库比较有利命理术数?

数码处理是 Python 的第一次全国代表大会应用场景,而 Excel
则是最风靡的多寡处理软件。由此用 Python 进行数量相关的工作时,难免要和
Excel 打交道。

近年亟需选取Python来操作excel表,读取表格内容到数据库。所以就寻找了有关质感。查找了一下,能够操作excel表的多少个库有以下多少个:

(一)
难点讲述:为了更加好地出示数据,Excel格式的数据文件往往比文本文件更拥有优势,不过现实到python中,该怎么导出数据到Excel呢?假诺碰到必要导出多量数量又该怎么操作呢?

回答:

只要单独是要以表单方式保留数据,能够注重 CSV
格式(1种以逗号分隔的表格数据格式)实行处理,Excel
也支撑此格式。但规范的 Excel
文件(xls/xlsx)具有较复杂的格式,并不便宜像平日文书文件1律直接举办读写,须求重视第一方库来贯彻。

  • openpyxl这几个是推荐使用的库,能够读写Excel
    2010之上格式,以.xlsx结尾的文书。

  • xlsxwriter这一个协助.xlsx,可是只帮衬写入,格式化等操作,不补助读取。

  • xlrd那些支撑读取数据,帮衬以xls结尾的文书,也正是相比老的格式。

  • xlwt这些和上边的相对应,帮忙写入书和格式化数据,帮衬xls结尾的文件格式。

  • xlutils那么些是构成了xlrd和xlwt七个库的效用。

本文重要化解上述七个难点。

推荐Pandas库,因为不论用Python做多少解析照旧用Python做机械学习,Pandas都以用得相比多的,个人感觉是也最有利于。

常用的库是 python-excel 类别:

公众号,今后技术类文章会发在专栏。以下参考官方文书档案本文代码托管在github上,点击链接

(二)具体步骤如下:

以下从四个地方回答:

应用python将大气数目导出到Excel中的小技巧分享,读写操作Excel。       xlrd、xlwt、xlutils、openpyxl

  • 创建一个工作簿

1.第一步,安装openpyxl,

  1. 应用python将大气数目导出到Excel中的小技巧分享,读写操作Excel。安装Pandas

  2. 数据源

  3. 利用Python读取Excel文件

  4. 利用Python做多少透视

  5. 将数据保存到Excel文件

  • xlrd - 读取 Excel 文件

  • xlwt - 写入 Excel 文件

  • xlutils - 操作 Excel 文件的实用工具,如复制、分割、筛选等

  • openpyxl  - 操作xlsx后缀的excel,实践发现 xlrd、xlwt、xlutils
    能够读写操作elsx文件,可是实际上保存后打不开,修改后缀为xls后能够符合规律打开,而先后是形成了常规的读写操作,只是人为不可能健康打开文件,所以那边要追加3个新的模块。。

动用pip install
openpyxl即可,不过在windows下安装的是2.2.陆本子,不过centos自动安装的是肆.一版本,(多谢海哥的提示)。

安装Pandas

 安装

一、下载地址:

  

  

  

  

  皇家赌场网址hj9292 1

 

 

 2、安装

  2.1、安装xlrd,

    方法一:

    切换来源文件下,执行命令 python setup.py install

    皇家赌场网址hj9292 2

    成功后会在 site-packages下新增xlrd文件夹及文件

    皇家赌场网址hj9292 3

  2.2、安装xlwt

    方法二:

    切换来源文件下,执行命令 pip
install xlwt-一.叁.0-py二.py3-none-any.whl

    皇家赌场网址hj9292 4

    安装成功后,会在site-packages下新增xlwt文件夹及文件

  2.3、安装xlutils 

     切换成源文件下,执行命令 pip
install xlutils-2.0.0-py2.py3-none-any.whl

     皇家赌场网址hj9292 5

      安装成功后,会在site-packages下新增xlutils文件夹及文件

  2.4、安装 openpyxl  

    切换成源文件下,执行命令 python setup.py install

      皇家赌场网址hj9292 6

 

    安装成功后下列目录下会变卦对应的文书夹及文件。

     皇家赌场网址hj9292 7

 

 

 

from openpyxl import Workbookwb = Workbook()ws = wb.active #默认创建第一个表,默认名字为sheetws1 = wb.create_sheet() #创建第二个表ws1.title = "New Title" #为第二个表设置名字ws2 = wb.get_sheet_by_name(New Title") #通过名字获取表,和第二个表示一个表ws1.save('your_name.xlsx') #保存

写的代码在windows下运作没难题,但centos上却报错了,说是ew=ExcelWriter(workbook=wb)少提供二个参数,于是不加思索在
237服务器上本身已安装2.2.陆本子的,难点消除。

在cmd窗口中,输入指令:pip install pandas

   

 

  • 读取三个工作簿中的内容
pip install openpyxl==2.2.6

皇家赌场网址hj9292 8

贰.次之步,哈哈,未有呀,废话不说了,直接上代码,ps,代码中涵盖xlwt和openpyxl的七个达成版本。

数据源

 from openpyxl import load_workbook wb = load_workbook('myname.xlsx') #加载一个工作簿 print wb.get_sheet_names() #获取各个sheet的名字

(叁)扩大阅读:通过翻看资料,发现网上各执一词,计算起来有如下几点:

例如,Excel文件Bank_Data.xlsx中有以下数据:

  • 回顾的用法

python Excel相关的操作的module
lib有两组,一组是xlrd、xlwt、xlutils,另1组是openpyxl,

皇家赌场网址hj9292 9

但是前壹组(xlrd,xlwt)比较老,只好处理由Excel 97-200三 或许Excel 玖七以前版本生成的xls格式的excel文件,xlwt甚至不支持0柒版之后的excel
,这些格式excel文件壹般的话,最大不得不援救25陆列或许6553陆行的excel文件。

利用Python读取Excel文件

from openpyxl import Workbookfrom openpyxl.compat import rangefrom openpyxl.cell import get_column_letterwb = Workbook()dest_filename = 'empty_book.xlsx'ws1 = wb.active #第一个表ws1.title = "range names" #第一个表命名#遍历第一个表的1到39行,每行赋值从1到599.for row in range: ws1.append(rangews2 = wb.create_sheet(title="Pi") # 创建第二个表ws2['F5'] = 3.14 #为第二个表的F5单元格赋值为3.14ws3 = wb.create_sheet(title="Data") #创建第三个表 /* 下面遍历第三个表的10到19行,27到53列,并对每一行的单元格赋一个当前列名的名字如下图 */for row in range: for col in range: _=ws3.cell(column=col,row=row,value="%s" % get_column_letter #_当作一个普通的变量,一般表示后边不再使用wb.save(filename=dest_filename) #保存

就此面对索要导出大批量数额到excel的情况,你将有如下三种选取,

率先,须要读取Excel文件中的数据,有二种艺术:

皇家赌场网址hj9292 10图片描述

(壹) 换1种存款和储蓄格式,如保存为CSV文件

1、读取Excel文件的首先种艺术

(贰) 使用openpyxl—,因为它帮助对Excel 200柒+ xlsx/xlsm format的处理

bankdata=pd.read_excel(‘../data/Bank_Data.xlsx’,sheet_name=’bankdata’,index_col=’银行编号’)
bankdata.head()

(3) win32 COM (Windows only)

运转结果:

理所当然,大家要直面困难了,为了越来越好地出示数据给产品和用户,我们依然选拔的第两种。

皇家赌场网址hj9292 11

ps,相当lucky,壹番找寻后笔者找到了openpyxl,援救07+的excel,向来有人在保卫安全,文书档案清晰易读,参照Tutorial和API文书档案极快就能上手,正是它了~

二、读取Excel文件的第三种艺术

(四)
闲话少说,直接上代码,敬请参考

#pip install xlrd

#pip install openpyxl

xls_file=pd.ExcelFile(‘../data/Bank_Data.xlsx’)

bankdata=xls_file.parse(‘bankdata’)

bankdata.head()

# coding:utf-8
'''
# 希望对大家有帮助哈,请多提问题
create by yaoyz
date: 2017/01/24
'''
import xlrd
import xlwt
# workbook相关
from openpyxl.workbook import Workbook
# ExcelWriter,封装了很强大的excel写的功能
from openpyxl.writer.excel import ExcelWriter
# 一个eggache的数字转为列字母的方法
from openpyxl.utils import get_column_letter
from openpyxl.reader.excel import load_workbook
class HandleExcel():
 '''Excel相关操作类'''
 def __init__(self):
  self. head_row_labels = [u'学生ID',u'学生姓名',u'联系方式',u'知识点ID',u'知识点名称']
 """
  function:
   读出txt文件中的每一条记录,把它保存在list中
  Param:
   filename: 要读出的文件名
  Return:
   res_list: 返回的记录的list
 """
 def read_from_file(self,filename):
  res_list=[]
  file_obj=open(filename,"r")
  for line in file_obj.readlines():
   res_list.append(line)
  file_obj.close()
  return res_list
 """
  function:
   读出*.xlsx中的每一条记录,把它保存在data_dic中返回
  Param:
   excel_name: 要读出的文件名
  Return:
   data_dic: 返回的记录的dict
 """
 def read_excel_with_openpyxl(self, excel_name="testexcel2007.xlsx"):
  # 读取excel2007文件
  wb = load_workbook(filename=excel_name)
  # 显示有多少张表
  print "Worksheet range(s):" , wb.get_named_ranges()
  print "Worksheet name(s):" , wb.get_sheet_names()
  # 取第一张表
  sheetnames = wb.get_sheet_names()
  ws = wb.get_sheet_by_name(sheetnames[0])
  # 显示表名,表行数,表列数
  print "Work Sheet Titile:" ,ws.title
  print "Work Sheet Rows:" ,ws.get_highest_row()
  print "Work Sheet Cols:" ,ws.get_highest_column()
  # 获取读入的excel表格的有多少行,有多少列
  row_num=ws.get_highest_row()
  col_num=ws.get_highest_column()
  print "row_num: ",row_num," col_num: ",col_num
  # 建立存储数据的字典
  data_dic = {}
  sign=1
  # 把数据存到字典中
  for row in ws.rows:
   temp_list=[]
   # print "row",row
   for cell in row:
     print cell.value,
     temp_list.append(cell.value)
   print ""
   data_dic[sign]=temp_list
   sign+=1
  print data_dic
  return data_dic
 """
  function:
   读出*.xlsx中的每一条记录,把它保存在data_dic中返回
  Param:
   records: 要保存的,一个包含每一条记录的list
   save_excel_name: 保存为的文件名
   head_row_stu_arrive_star:
  Return:
   data_dic: 返回的记录的dict
 """
 def write_to_excel_with_openpyxl(self,records,head_row,save_excel_name="save.xlsx"):
  # 新建一个workbook
  wb = Workbook()
  # 新建一个excelWriter
  ew = ExcelWriter(workbook=wb)
  # 设置文件输出路径与名称
  dest_filename = save_excel_name.decode('utf-8')
  # 第一个sheet是ws
  ws = wb.worksheets[0]
  # 设置ws的名称
  ws.title = "range names"
  # 写第一行,标题行
  for h_x in range(1,len(head_row)+1):
   h_col=get_column_letter(h_x)
   #print h_col
   ws.cell('%s%s' % (h_col, 1)).value = '%s' % (head_row[h_x-1])
  # 写第二行及其以后的那些行
  i = 2
  for record in records:
   record_list=str(record).strip().split("\t")
   for x in range(1,len(record_list)+1):
    col = get_column_letter(x)
    ws.cell('%s%s' % (col, i)).value = '%s' % (record_list[x-1].decode('utf-8'))
   i += 1
  # 写文件
  ew.save(filename=dest_filename)
 """
  function:
   测试输出Excel内容
   读出Excel文件
  Param:
   excel_name: 要读出的Excel文件名
  Return:
   无
 """
 def read_excel(self,excel_name):
  workbook=xlrd.open_workbook(excel_name)
  print workbook.sheet_names()
  # 获取所有sheet
  print workbook.sheet_names() # [u'sheet1', u'sheet2']
  sheet2_name = workbook.sheet_names()[1]
  # 根据sheet索引或者名称获取sheet内容
  sheet2 = workbook.sheet_by_index(1) # sheet索引从0开始
  sheet2 = workbook.sheet_by_name('Sheet1')
  # sheet的名称,行数,列数
  print sheet2.name,sheet2.nrows,sheet2.ncols
  # 获取整行和整列的值(数组)
  rows = sheet2.row_values(3) # 获取第四行内容
  cols = sheet2.col_values(2) # 获取第三列内容
  print rows
  print cols
  # 获取单元格内容
  print sheet2.cell(1,0).value
  print sheet2.cell_value(1,0)
  print sheet2.row(1)[0].value
  # 获取单元格内容的数据类型
  print sheet2.cell(1,0).ctype
  # 通过名称获取
  return workbook.sheet_by_name(u'Sheet1')
 """
  function:
   设置单元格样式
  Param:
   name: 字体名字
   height: 字体高度
   bold: 是否大写
  Return:
   style: 返回设置好的格式对象
 """
 def set_style(self,name,height,bold=False):
  style = xlwt.XFStyle() # 初始化样式
  font = xlwt.Font() # 为样式创建字体
  font.name = name # 'Times New Roman'
  font.bold = bold
  font.color_index = 4
  font.height = height
  borders= xlwt.Borders()
  borders.left= 6
  borders.right= 6
  borders.top= 6
  borders.bottom= 6
  style.font = font
  style.borders = borders
  return style
 """
  function:
   按照 设置单元格样式 把计算结果由txt转变为Excel存储
  Param:
   dataset:要保存的结果数据,list存储
  Return:
   将结果保存为 excel对象中
 """
 def write_to_excel(self, dataset,save_excel_name,head_row):
  f = xlwt.Workbook() # 创建工作簿
  # 创建第一个sheet:
  # sheet1
  count=1
  sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True) # 创建sheet
  # 首行标题:
  for p in range(len(head_row)):
    sheet1.write(0,p,head_row[p],self.set_style('Times New Roman',250,True))
  default=self.set_style('Times New Roman',200,False) # define style out the loop will work
  for line in dataset:
   row_list=str(line).strip("\n").split("\t")
   for pp in range(len(str(line).strip("\n").split("\t"))):
    sheet1.write(count,pp,row_list[pp].decode('utf-8'),default)
   count+=1
  f.save(save_excel_name) # 保存文件
 def run_main_save_to_excel_with_openpyxl(self):
  print "测试读写2007及以后的excel文件xlsx,以方便写入文件更多数据"
  print "1. 把txt文件读入到内存中,以list对象存储"
  dataset_list=self.read_from_file("test_excel.txt")
  '''test use openpyxl to handle EXCEL 2007'''
  print "2. 把文件写入到Excel表格中"
  head_row_label=self.head_row_labels
  save_name="test_openpyxl.xlsx"
  self.write_to_excel_with_openpyxl(dataset_list,head_row_label,save_name)
  print "3. 执行完毕,由txt格式文件保存为Excel文件的任务"
 def run_main_save_to_excel_with_xlwt(self):
  print " 4. 把txt文件读入到内存中,以list对象存储"
  dataset_list=self.read_from_file("test_excel.txt")
  '''test use xlwt to handle EXCEL 97-2003'''
  print " 5. 把文件写入到Excel表格中"
  head_row_label=self.head_row_labels
  save_name="test_xlwt.xls"
  self.write_to_excel_with_openpyxl(dataset_list,head_row_label,save_name)
  print "6. 执行完毕,由txt格式文件保存为Excel文件的任务"
if __name__ == '__main__':
 print "create handle Excel Object"
 obj_handle_excel=HandleExcel()
 # 分别使用openpyxl和xlwt将数据写入文件
 obj_handle_excel.run_main_save_to_excel_with_openpyxl()
 obj_handle_excel.run_main_save_to_excel_with_xlwt()
 '''测试读出文件,注意openpyxl不可以读取xls的文件,xlrd不可以读取xlsx格式的文件'''
 #obj_handle_excel.read_excel_with_openpyxl("testexcel2003.xls") # 错误写法
 #obj_handle_excel.read_excel_with_openpyxl("testexcel2003.xls") # 错误写法
 obj_handle_excel.read_excel("testexcel2003.xls")
 obj_handle_excel.read_excel_with_openpyxl("testexcel2007.xlsx")

运转结果:

以上那篇使用python将大气数目导出到Excel中的小技巧分享就是小编分享给大家的全体内容了,希望能给我们一个参阅,也可望大家多多援救脚本之家。

皇家赌场网址hj9292 12

你可能感兴趣的稿子:

  • Python三完成从文件中读取钦点行的法子
  • Python完结对excel文件列表值进行计算的主意
  • python读取excel钦赐列数据并写入到新的excel方法
  • Python实行多少提取的不2法门总计
  • 用python读写excel的方法
  • 化解Python pandas df 写入excel
    出现的标题
  • Python三使用pandas模块读写excel操作示例
  • Python基于xlrd模块操作Excel的章程言传身教
  • 采取python对Excel中的特定数据提取并写入新表的不二等秘书籍
  • python
    xlsxwriter成立excel图表的法子
  • python操作excel的包(openpyxl、xlsxwriter)
  • python操作excel的办法(xlsxwriter包的运用)
  • 采用Python处理Excel表格的粗略方法
  • Python达成读取txt文件并更换为excel的艺术言传身教
  • python三读取excel文件只领到有些行有个别列的值方法

评释:ExcelFile用到了xlrd和openpyxl包,须要提前设置。

利用Python做多少透视

接下去还足以行使Python做多少透视:

譬如说,想计算每个地区的不良贷款总额,则

import numpy as np
bank_res1=bankdata.pivot_table(index=[‘所属地区’],values=[‘不良贷款(亿元)’],aggfunc=np.sum)
bank_res1

皇家赌场网址hj9292 13

表明:以上用到numpy,所以举行了导入,需求先安装。

想计算每个地方的不良贷款总额,及银行多少,则

bank_res2=bankdata.pivot_table(index=[‘所属地区’],values=[‘不良贷款(亿元)’,’银行编号’],aggfunc={‘不良贷款(亿元)’:np.sum,’银行编号’:np.count_nonzero})

bank_res2

皇家赌场网址hj9292 14

将数据保存到Excel文件

谈起底,将透视结果保存到Excel,1行代码解决。

bank_res2.to_excel(“bank_res2.xlsx”)

在当前目录下,能够看出一个新的Excel文件

bank_res2.xlsx

皇家赌场网址hj9292,,打开后得以看看如下结果:

皇家赌场网址hj9292 15

回复完结!

回答:

Python对Excel的操作本人根本用xlwt、xlrd、xlutils那多少个库。

xlwt首要用来成立并写入数据到Excel。已经存在的表无法写入。

以下使用Python写9九乘法表到Excel

皇家赌场网址hj9292 16

运作之后,代码文件所在的文件夹会多出二个”九玖乘法表“的Excel,内容如下图:

皇家赌场网址hj9292 17

xlrd首要用来读取Excel的多寡。

以下使用Python读取刚刚写入的99乘法表。

皇家赌场网址hj9292 18

打字与印刷结果如下图:

皇家赌场网址hj9292 19

选用xlutils的copy函数来变相更改Excel的多寡

合营xlrd库来改变

皇家赌场网址hj9292 20

运营之后,文件夹又多出三个”九九乘法表改版“的Excel表格。内容如下:

皇家赌场网址hj9292 21

回答:

python操作Exlcel首要一下三个库:

xlrd & xlwt & xlutils

xlrd负责读取Excel文件,协助xls、xlsx

xlwt负责写入Excel文件,只支持xls格式。对于后日早已Office201玖了,还只协助200三版的格式难怪会被人扬弃。

xlutils是二个工具模块,大家一般只用到copy模块,用于修改已存在的Excel文件

里面xlrd相比便宜,假如学习的话,要同等看待,人与人以内的认知和接受是有轻微分歧的。提议系统的对八个库整体把握一下,看是由于兴趣依然工作亟待。祝你早日获得高人指导,争取达到人生巅峰。

回答:

谢邀!以下是答案 仅供参考!

xlrd负责读取Excel文件,协理xls、xlsx;

xlwt负责写入Excel文件,只补助xls格式。

xlutils是三个工具模块,大家一般只用到copy模块,用于修改已存在的Excel文件

回答:

您问哪些容命理术数,小编想说会哪个哪个就便于

回答:

今昔风行的xlwings,和pyxll,后者的进程急迅,

Leave a Comment.