在本文中,我们将详细介绍计算Excel工作表而不打开它们的各个方面,并为您提供关于openpyxl或xlwt的相关解答,同时,我们也将为您带来关于25.xlrd、xlwt和openpyxl模块的比较和
在本文中,我们将详细介绍计算Excel工作表而不打开它们的各个方面,并为您提供关于openpyxl或xlwt的相关解答,同时,我们也将为您带来关于25.xlrd、xlwt和openpyxl模块的比较和使用、Excel文件处理之xlrd、xlwt、xlutils、openpyxl、openpyxl 操作excel文档、openpyxl 获取excel 单元格 颜色的有用知识。
本文目录一览:- 计算Excel工作表而不打开它们(openpyxl或xlwt)(excel不进行计算)
- 25.xlrd、xlwt和openpyxl模块的比较和使用
- Excel文件处理之xlrd、xlwt、xlutils、openpyxl
- openpyxl 操作excel文档
- openpyxl 获取excel 单元格 颜色
计算Excel工作表而不打开它们(openpyxl或xlwt)(excel不进行计算)
我制作了一个脚本,该脚本打开一个.xls文件,在其中写入一些新值,然后保存该文件。
后来,脚本再次将其打开,并希望在某些包含公式的单元格中找到答案。
如果我用openpyxl调用该单元格,则会得到公式(即:)"=A1*B1"
。如果激活data_only
,我什么也没得到。
有没有办法让Python计算.xls文件?(或者我应该尝试PyXll吗?)
答案1
小编典典实际上,有一个使用Excel公式并使用Python对其求值的项目: Pycel。Pycel使用Excel本身(通过COM)提取公式,因此在您的情况下,您将跳过该部分。
该项目可能有一些有用的东西可供您使用,但是我不能保证它的成熟度或完整性。
它并不是真正为普通大众开发的。
还有一个名为Koala的较新项目,该项目基于Pycel和OpenPyXL。
如果您不能使用Excel,但 可以
自己计算公式的结果(在Python代码中),另一种方法是将值和公式都写入一个单元格中(这样,当您读取文件时,可以只需拉出该值,根本不用担心公式)。在撰写本文时,我还没有在OpenPyXL中找到一种方法来做到这一点,但是XlsxWriter可以做到。从文档中:
XlsxWriter不会计算公式的值,而是将值0存储为公式结果。然后,它在XLSX文件中设置一个全局标志,说打开该文件时应重新计算所有公式和函数。这是Excel文档中建议的方法,并且通常可以与电子表格应用程序很好地配合使用。但是,不具备计算公式功能的应用程序(例如Excel
Viewer)或某些移动应用程序将仅显示0结果。如果需要,还可以使用options值参数来指定公式的计算结果。当使用不计算公式值的非Excel应用程序时,这有时是必要的。计算出的值将添加到参数列表的末尾:
worksheet.write_formula(’A1’,’= 2 + 2’,num_format,4)
通过这种方法,当需要读取值时,可以使用OpenPyXL的data_only
选项。(对于其他人,阅读此答案:如果您使用xlrd,则无论如何都只能使用该值。)
最后,如果您 确实
有Excel,那么您可能要做的最直接,最可靠的事情就是自动在Excel中打开和重新保存文件(以便它可以为您计算和编写公式的值)。xlwings是从Windows或Mac上执行此操作的简便方法。
25.xlrd、xlwt和openpyxl模块的比较和使用
xlrd、xlwt和openpyxl模块的比较:
1)xlrd:对xls、xlsx、xlsm文件进行读操作–读操作效率较高,推荐
2)xlwt:对xls文件进行写操作–写操作效率较高,但是不能执行xlsx文件
3)openpyxl:对xlsx、xlsm文件进行读、写操作–xlsx写操作推荐使用
一、xlrd:对xls、xlsx文件进行读操作
1.获取工作簿对象:xlrd.open_workbook()
workBook = xlrd.open_workbook(filemname):打开Excel文件读取数据
注:filemname为文件名以及路径,如果路径或者文件名有中文给前面加一个r表示原生字符。
import xlrd
filename=r''D:\360极速浏览器下载\文件阅读记录表.xls''
workBook=xlrd.open_workbook(filename)
2.获取工作表(sheet)对象
1)workBook.sheet_names():获取所有sheet页的名字,返回一个列表
2)sheetName = workBook.sheet_by_name(‘sheet1’):根据sheet页的名字获取指定表名的表,返回的是一个对象
3)sheetName = workbook.sheet_by_index(0):根据sheet索引获取对应sheet表(索引是从0开始的),返回的是一个对象
3.获取sheet的名称:name
sheetName.name:获取sheet的名称
4.获取行数和列数:nrows、ncols
sheetName.nrows:获取表格的总行数
sheetName.ncols:获取表格的总列数
5.获取整行或整列的值(数组):row_values、col_values
rows = sheetName.row_values(0) # 获取第一行内容,返回一个列表
cols = sheetName.col_values(0) # 获取第一列内容,返回一个列表
6.获取指定单元格的值:cell(a,b).value、row(1)[0].value
sheetName.cell(1,0).value:获取第2行第一列的单元格数据
sheetName.row(1)[0].value:获取第2行第一列的单元格数据
7.获取单元格内容的数据类型:ctype
sheetName.cell(1,0).ctype
注:返回为代表数据类型的值,编码分别代表:ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
二、xlwt:对xls文件进行写操作
1.新建工作簿:xlwt.Workbook()
workBook = xlwt.Workbook() :新建工作簿
2.在工作簿中新建sheet页:add_sheet()
table = workBook .add_sheet(‘Over’,cell_overwrite_ok=True) # 如果对同一单元格重复操作会发生overwrite Exception,cell_overwrite_ok为可覆盖
sheet = workBook .add_sheet(sheet_name):新增sheet表
import xlwt
wb=xlwt.Workbook(encoding=''utf-8'') # 创建一个工作薄
sheet=wb.add_sheet(''文件阅读记录信息表'') # 创建一个工作表
3.向表格中写入数据:write(i,j,value)
sheet.write(i,j,value) :向单元格(i,j)写入数据value
4.保存工作簿:save()
workBook.save(path)
三、openpyxl:对xlsx文件进行写操作
1.新建工作簿:openpyxl.Workbook()
workBook = openpyxl.Workbook() :新建工作簿
2.在工作簿中新建sheet页:create_sheet()
sheet = workBook .create_sheet(sheet_name):新增sheet表:sheet_name
3.向表格中写入数据:cell(i,j,value) --索引从1计数
sheet= workBook .active :获得当前活跃的工作页,默认为第一个工作页
sheet.cell(i,j,value) :向单元格(i,j)第i行第j列写入数据value
注意:行号和列号都从1开始计数,即(1,1)为第一行第一列
4.保存工作簿:save()
workBook .save(path)
四、openpyxl:对xlsx文件进行读操作
1.获取工作簿对象:openpyxl.load_workbook()
workBook = openpyxl.load_workbook(filemname):读取xlsx文件
注:filemname为文件名以及路径,如果路径或者文件名有中文给前面加一个r表示原生字符。
2.获取工作表(sheet)对象
1)workBook.get_sheet_names():获取所有sheet页的名字(所有工作表名)
2)sheetName = workBook.get_sheet_by_name(‘sheet1’):根据sheet页的名字获取指定表名的表
3)sheetName = workBook.worksheets[0]:根据sheet索引获取对应sheet表
3.获取sheet的名称:title
sheetName.title:获取sheet的名称
4.获取行数和列数:max_row、max_column
sheetName.max_row:获取表格的总行数
sheetName.max_column:获取表格的总列数
5.获取整行或整列的值(数组):rows[i]、columns[i]
rows = sheetName.rows:获取每一行内容,这是一个生成器,里面是每一行数据,每一行数据由一个元组类型包裹
cols = sheetName.columns :获取每一列内容,同上
sheetName.rows[0]:获取第一行内容–索引从0计数
sheetName.columns[0]:获取第一列内容–索引从0计数
6.获取指定单元格的值:cell(a,b).value–索引从1计数
sheetName[‘A1’].value:获取第1行第一(A)列的单元格数据
sheetName.cell(1,1).value:获取第1行第一列的单元格数据
注:此处的行数和列数都是从1开始计数的,而在xlrd中是由0开始计数的
Excel文件处理之xlrd、xlwt、xlutils、openpyxl
openpyxl 操作excel文档
1.打开已存在文档
import openyxl
wb = openpyxl.load_workbook(file_path)
ws = wb[sheet_name]
2.修改单元格数据
ws.cell(1,1).value = "test"
3.设置单元格样式(边框和字体)
from openpyxl.styles import Border, Side, Font, Alignment
border = Border(left=Side(style=''medium'',color=''FF000000''),right=Side(style=''medium'',color=''FF000000''))
font = Font(name=''新宋体'',size=10,bold=False,italic=False,vertAlign=None,underline=''none'',strike=False,color=''FF000000'')
ws.cell(1,1).border = border
ws.cell(1,1).font = font
# 自动换行
ws.cell(1,1).alignment = Alignment(wrapText=True)
4.将dataframe数据插入excel表中
from openpyxl.utils.dataframe import dataframe_to_rows
import pandas as pd
df = pd.DataFrame([[1,2,3],[1,2,3]],columns=[''a'',''b''])
for row in dataframe_to_rows(df, index=False, header=False):
ws.append(row)
5.在excel中插入曲线图
from openpyxl.chart import (
LineChart,
Reference,
)
from openpyxl.chart.axis import DateAxis
line_chart = LineChart()
line_chart.title = "char_title"
line_chart.style = 13
# x y轴的名称
line_chart.y_axis.title = ''Y label''
line_chart.x_axis.title = ''X label''
# 图表所依据的数据位置
data = Reference(ws, min_col=2, min_row=1, max_col=2, max_row=10)
line_chart.add_data(data, titles_from_data=True)
# x轴坐标标签所依据的数据位置
x_labels = Reference(ws, min_col=1, min_row=2, max_row=10)
line_chart.set_categories(x_labels)
line_chart.width = 19
line_chart.height = 7
# 设置线条样式
line1 = line_chart.series[0]
line1.smooth = True # 线条光滑
line1.marker.symbol = "triangle"
line1.graphicalProperties.line.width = 20000 #线条粗细
# 插入图表的左上角位置
ws.add_chart(line_chart, "G2")
openpyxl 获取excel 单元格 颜色
book = openpyxl.load_workbook(filedir) sheet_ = book.get_sheet_by_name(book.get_sheet_names()[0])
sheet_.cell(i, 3).font.color.rgb # 获取 表格内字体颜色
sheet_.cell(i, 3).fill.fgColor.rgb # 获取表格 填充色 颜色
我们今天的关于计算Excel工作表而不打开它们和openpyxl或xlwt的分享已经告一段落,感谢您的关注,如果您想了解更多关于25.xlrd、xlwt和openpyxl模块的比较和使用、Excel文件处理之xlrd、xlwt、xlutils、openpyxl、openpyxl 操作excel文档、openpyxl 获取excel 单元格 颜色的相关信息,请在本站查询。
本文标签: