一个用于读取/写入Excel 2010 xlsx/xlsm文件的Python库。Homepage
| Author: | Eric Gazoni, Charlie Clark |
|---|---|
| Source code: | http://bitbucket.org/openpyxl/openpyxl/src |
| Issues: | http://bitbucket.org/openpyxl/openpyxl/issues |
| Generated: | Feb 04, 2019 |
| License: | MIT/Expat |
| Version: | 2.5.15 |
openpyxl 是一个 Python 库,用于读/写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。
它诞生于缺乏现有的库,可以从Python本地读取/写入 Office Open XML 格式。
PHPExcel团队的所有荣誉都是基于PHPExcel的。
pip install et-xmlfile
pip install jdcal
pip install openpyxl
# 可选库:
pip install lxml
from openpyxl import Workbook
wb = Workbook()
# grab the active worksheet
ws = wb.active
# Data can be assigned directly to cells
ws['A1'] = 42
# Rows can also be appended
ws.append([1, 2, 3])
# Python types will automatically be converted
import datetime
ws['A2'] = datetime.datetime.now()
# Save the file
wb.save("sample.xlsx")
# -*- coding: utf-8 -*-
# 操作excel
from openpyxl import Workbook
from openpyxl import load_workbook
import time
#读取xlsx文件
def read_xlsx(file_name):
# 打开xlsx文件
wb = load_workbook(file_name)
# 获取表格名称列表: # ==> [u'Sheet1', u'Sheet2', u'Sheet3']
wb.get_sheet_names()
# 或 wb.sheetnames
# 获取一个工作表
ws = wb["Sheet1"]
ws = wb.get_sheet_by_name('Sheet1')
ws = wb.get_sheet_by_name(sheet_names[0])
ws = wb.active # 获取活动的工作表
ws = wb.get_active_sheet()
# 获取当前工作表名称
ws.title
# 获取行数、列数
ws.max_row
ws.max_column
# 获取某个单元格的值
cell_A1 = ws.cell(row = 1, column = 1).value
# ws.cell('A1')已弃用,请用ws['A1']
ws.cell('A1').value
ws['A1'].value
# 访问多个单元格 # ==> ((<Cell u'Sheet1'.A1>, <...>), (<...>, <...>))
cell_range = ws['A1':'C2']
for row in cell_range:
for cell in row:
print cell.value
print "\n"
#写入xlsx文件
def write_xlsx(file_name):
#打开一个Excel
wb = Workbook()
# 获取活动的工作表 # 默认:<Worksheet "Sheet">
ws = wb.active
# 更改sheet的名字
ws.title = "Sheet_test"
# 创建一个工作表,不指定title默认为:"Sheet"
ws = wb.create_sheet(title="cool")
ws.cell(row = 1 , column = 1).value = u'客户公司id'
ws.cell(row = 1 , column = 2).value = u'登陆人数'
ws.cell(row = 1 , column = 3).value = u'最多在线人数'
ws['A2'] = '111'
ws['B2'].value = '222'
# ws.cell('C2').value = '333' # 已弃用,请用ws['A1']
# 保存
wb.save(file_name)
if __name__ == '__main__':
date = time.strftime('%Y%m%d',time.localtime())
# file_name = u'功能号统计.xlsx'
# read_xlsx(file_name)
file_name = date + '.xlsx'
write_xlsx(file_name)
XlsxWriter 是一个 Python 模块,用于以 Excel 2007+ XLSX 文件格式写入文件。
XlsxWriter 可用于将文本、数字、公式和超链接写入多个工作表,它支持格式等功能,包括:
它支持 Python 3.4+ 和 PyPy3,并且仅使用标准库。
pip install XlsxWriter
这是一个简单的例子:
import xlsxwriter
# Create an new Excel file and add a worksheet.
workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()
# Widen the first column to make the text clearer.
worksheet.set_column('A:A', 20)
# Add a bold format to use to highlight cells.
bold = workbook.add_format({'bold': True})
# Write some simple text.
worksheet.write('A1', 'Hello')
# Text with formatting.
worksheet.write('A2', 'World', bold)
# Write some numbers, with row/column notation.
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)
# Insert an image.
worksheet.insert_image('B5', 'logo.png')
workbook.close()
xlwings 是一个 BSD 许可 Python 库,可以轻松地从 Excel 调用 Python,反之亦然:
完全支持 Numpy 数组 和 Pandas Series/DataFrames。 xlwings 支持的工作簿很容易在 Windows 和 macOS 上分发和工作。
xlwings 包含 xlwings 包中除“pro”文件夹(即“xlwings.pro”子包)之外的所有文件。
pip install xlwings
import xlwings as xw
所谓的 CSV(逗号分隔值)格式是电子表格和数据库最常见的导入和导出格式。 没有“CSV 标准”,因此该格式在操作上是由许多读写它的应用程序定义的。 缺乏标准意味着不同应用程序生成和使用的数据经常存在细微的差异。 这些差异可能会让处理多个源的 CSV 文件变得烦人。 尽管如此,虽然分隔符和引号字符有所不同,但总体格式足够相似,因此可以编写可以有效操作此类数据的单个模块,从而向程序员隐藏读取和写入数据的细节。
csv 模块实现了以 CSV 格式读取和写入表格数据的类。 它允许程序员说“以 Excel 首选的格式写入此数据”或“从 Excel 生成的此文件中读取数据”,而无需了解 Excel 使用的 CSV 格式的精确详细信息。 程序员还可以描述其他应用程序理解的 CSV 格式或定义自己的专用 CSV 格式。
csv 模块的reader和writer对象读取和写入序列。程序员还可以使用 DictReader和 DictWriter 类以字典形式读取和写入数据。
import time
import csv
#写入csv文件
def writeCsv(allCount):
date = time.strftime('%Y%m%d',time.localtime())
csvfile = file(date + '.csv', 'wb')
writer = csv.writer(csvfile)
writer.writerow([u'客户公司id'.encode('gbk'), u'登陆人数'.encode('gbk'), u'最多在线人数'.encode('gbk')])
for secCount in allCount:
writer.writerow([getSecID(secCount), allCount[secCount][0], allCount[secCount][1]])
csvfile.close()
#读取csv文件
def readCsv(allCount):
date = time.strftime('%Y%m%d',time.localtime())
csvfile = file(date + '.csv', 'wb')
reader = csv.reader(csvfile)
# 首行
head = next(reader)
# 按行读取
for line in reader:
privateIP, publicIP, Zone, InstanceName, hostname, hostname2 = line
print(line)
break
csvfile.close()
# 读取某一列数据
reader = csv.reader(f)
column = [row[1] for row in reader]
print(column)
office excel导出csv文件格式处理
office excel导出的csv文件,日期格式形如 xxx,2020/1/9,xxx 导入hive会报错,需要处理成 2020-01-09,使用shell脚本处理
# 月份加0
sed -i 's#,\(20..\)/\(.\)/#,\1/0\2/#g' digital_operation1.CSV
# 天数加0
sed -i 's#,\(20../../\)\(.\),#,\10\2,#g' digital_operation1.CSV
#/换成-
sed -i 's#\(20..\)/\(..\)/\(..\),#\1-\2-\3,#g' digital_operation1.CSV
Homepage, github, Python2, Python3
该软件包提供了一系列用于处理 Excel 文件的实用程序。 由于这些实用程序可能需要 xlrd 和 xlwt 包中的一个或两个,因此它们在这里收集在一起, 与任一包分开。 这些实用程序分为包内的几个模块,每个模块的文档如下:
用于将 xlrd.Book 对象复制到 xlwt.Workbook 对象的工具。
用于以用户友好且安全的方式显示有关 xlrd 相关对象的信息的实用程序函数。
一个迷你框架,用于将现有 Excel 文件拆分和过滤为新的 Excel 文件。
用于查找 Excel 文件包含多少有用数据的工具。
用于将 xlrd.Book 对象序列化回 Excel 文件的工具。
用于处理格式信息的工具表达了 Excel 文件中的样式。
易于使用工作簿工作表中包含的数据视图。
Do the following in your virtualenv:
pip install xlutils
根据只读xls生成新的xls,保留原始格式。(from chatgpt)
import xlrd
from xlutils.copy import copy
import sys
import os
def copy_excel_file(input_file, output_file):
# 打开源文件
workbook = xlrd.open_workbook(input_file, formatting_info=True)
# 创建新的 xls 文件
new_workbook = copy(workbook)
# 保存新的 xls 文件
new_workbook.save(output_file)
if __name__ == '__main__':
try:
input_file = sys.argv[1]
except IndexError as e:
print('Usage: python3 %s <xls_file>' % __file__)
sys.exit()
output_file, _ = os.path.splitext(input_file)
output_file += '_output.xls'
copy_excel_file(input_file, output_file)
print("%s 文件已创建。" % output_file)
xlrd 是一个用于从历史 .xls 格式的 Excel 文件中读取数据和格式化信息的库。
警告
该库将不再读取 .xls 文件以外的任何内容。 对于读取较新文件格式的替代方案,请参阅 http://www.python-excel.org/。
以下内容也不受支持,但会安全可靠地被忽略:
不支持受密码保护的文件,并且此库无法读取这些文件。
pip install xlrd
import xlrd
book = xlrd.open_workbook("myfile.xls")
print("The number of worksheets is {0}".format(book.nsheets))
print("Worksheet name(s): {0}".format(book.sheet_names()))
sh = book.sheet_by_index(0)
print("{0} {1} {2}".format(sh.name, sh.nrows, sh.ncols))
print("Cell D30 is {0}".format(sh.cell_value(rowx=29, colx=3)))
for rx in range(sh.nrows):
print(sh.row(rx))
在命令行中,这将显示每个文件中每个工作表的第一、第二和最后一行:
python PYDIR/scripts/runxlrd.py 3rows *blah*.xls
# -*- coding: utf-8 -*-
# 读取excel
import xlrd
#打开Excel文件读取数据
rdbook = xlrd.open_workbook('1.xls')
#获取一个工作表
table = rdbook.sheets()[1] #通过索引顺序获取
table = data.sheet_by_index(0) #通过索引顺序获取
table = data.sheet_by_name(u'Sheet1') #通过名称获取
#获取行数
nrows = table.nrows
#获取列数
ncols = table.ncols
#print nrows
#print ncols
#获取某一行数据(列表),0即为列的表头
row = table.row_values(0)
#获取某一列数据(列表),0即为行的表头
col = table.col_values(0)
#输出某一行、某一列(列表)
#print row
#print col
#逐个输出某一行、某一列
for i in range(ncols):
print('%d:%3s;')%(i,row[i]),
print
for j in range(nrows):
print('%d:%3s;')%(j,col[j]),
print
#获取某一单元格数据
cell_A1 = table.cell(0,0).value
print cell_A1
#获取某一单元格数据,使用行列索引
cell_C3 = table.row(2)[2].value
print cell_C3
这是一个供开发人员用来生成与 Microsoft Excel 版本 95 至 2003 兼容的电子表格文件的库。
该包本身是纯 Python,不依赖于标准 Python 发行版之外的模块或包。
在使用此软件包之前,请阅读以下内容:https://groups.google.com/d/msg/python-excel/P6TjJgFVjMI/g8d0eWxTBQAJ
在您的虚拟环境中执行以下操作:
pip install xlwt
import xlwt
from datetime import datetime
style0 = xlwt.easyxf('font: name Times New Roman, color-index red, bold on',
num_format_str='#,##0.00')
style1 = xlwt.easyxf(num_format_str='D-MMM-YY')
wb = xlwt.Workbook()
ws = wb.add_sheet('A Test Sheet')
ws.write(0, 0, 1234.56, style0)
ws.write(1, 0, datetime.now(), style1)
ws.write(2, 0, 1)
ws.write(2, 1, 1)
ws.write(2, 2, xlwt.Formula("A3+B3"))
wb.save('example.xls')
文档可以在 xlwt 包的 docs 目录中找到。 如果这些还不够,请查阅示例目录中的代码和源代码本身。
最新文档也可以在以下位置找到:https://xlwt.readthedocs.io/en/latest/
# -*- coding: utf-8 -*-
# 写入excel
import xlwt
#打开一个Excel
wtbook = xlwt.Workbook()
#添加一个sheet
sheet = wtbook.add_sheet('test')
#将数据写入excel
sheet.write(0,0,'haha')
#保存
wtbook.save('wt.xls')