我想在一个excel电子表格中读到python/panda,但有公式而不是单元格结果。例如,如果单元格A1为25,单元格B1为= A1,我希望 Dataframe 显示:
25 =A1
现在它显示:
25 25
我怎么能这样做呢?
yh2wf1be1#
OpenPyXL提供了这种开箱即用的容量。请参见此处和此处。示例:
OpenPyXL
from openpyxl import load_workbook import pandas as pd wb = load_workbook(filename = 'empty_book.xlsx') sheet_names = wb.get_sheet_names() name = sheet_names[0] sheet_ranges = wb[name] df = pd.DataFrame(sheet_ranges.values)
kh212irz2#
是的,这是可能的。我最近发现了一个包,它以一种相当复杂的方式解决了这个问题。它叫做portable-spreadsheet(通过pip install portable-spreadsheet提供)。它基本上封装了xlsxwriter。下面是一个简单的例子:
pip install portable-spreadsheet
xlsxwriter
import portable_spreadsheet as ps sheet = ps.Spreadsheet.create_new_sheet(5, 5) # Set values sheet.iloc[0, 0] = 25 # Set A1 sheet.iloc[1, 0] = sheet.iloc[0, 0] # reference to A1 # Export to Excel sheet.to_excel('output/sample.xlsx')
它的工作方式与Pandas Dataframe类似。
z6psavjg3#
有一个选项可以使用xlwings和panda模块来实现这一点。xlwings提供了一种通过python脚本自动化excel的方法。创建一个“sample.xlsx”文件,并在范围(“A1”)内添加随机公式。下面是从给定文件中读取值和公式的示例代码:
import pandas as pd import xlwings as xw wbk = xw.Book('sample.xlsx') ws = wbk.sheets[0] print(ws.cells(1,1).value) print(ws.cells(1,1).formula)
同样的事情也适用于range。你可以把range.value赋值给dataframe,反之亦然。如果你想从大范围内得到公式,你也可以得到,但是它会返回元组。希望这在某种程度上是有帮助的。
range.value
wz3gfoph4#
使用xlwings。这是Python中一个非常有用的工具,它有详细的文档和视频。祝你好运!
4条答案
按热度按时间yh2wf1be1#
OpenPyXL
提供了这种开箱即用的容量。请参见此处和此处。示例:kh212irz2#
是的,这是可能的。我最近发现了一个包,它以一种相当复杂的方式解决了这个问题。它叫做portable-spreadsheet(通过
pip install portable-spreadsheet
提供)。它基本上封装了xlsxwriter
。下面是一个简单的例子:它的工作方式与Pandas Dataframe类似。
z6psavjg3#
有一个选项可以使用xlwings和panda模块来实现这一点。xlwings提供了一种通过python脚本自动化excel的方法。
创建一个“sample.xlsx”文件,并在范围(“A1”)内添加随机公式。
下面是从给定文件中读取值和公式的示例代码:
同样的事情也适用于range。你可以把
range.value
赋值给dataframe,反之亦然。如果你想从大范围内得到公式,你也可以得到,但是它会返回元组。希望这在某种程度上是有帮助的。
wz3gfoph4#
使用xlwings。这是Python中一个非常有用的工具,它有详细的文档和视频。祝你好运!