Model.new_excel_range#

Model.new_excel_range(name, path, range_, sheet=None, keyids=None, loadpath=None)#

创建一个对Excel范围的引用

从Excel文件中读取一个Excel范围,创建一个ExcelRange对象,并将其分配给名为name的引用。

该方法返回的对象是一个ExcelRange对象。 它是一个映射对象,具有与其他映射对象(如dict)相同的方法和操作。 用户可以通过与dict相同的操作符和方法,通过该对象读取和写入Excel文件中的值。

ExcelRange 对象与绑定引用的模型相关联。

ExcelRange对象与引用之间的绑定关系由所属Model跟踪管理, 当绑定到ExcelRange对象的所有引用都被删除时,该对象将被自动删除。

ExcelRange 对象不能与其他对象存在Excel范围重叠。

当绑定到ExcelRange对象的所有引用都被删除时,该对象将被删除。

Excel范围数据从loadpath指定的工作簿中读取,并保存到path。如果未提供loadpath,则path也用于读取。

path是一个类路径对象,可以是相对路径或绝对路径。如果给定的是相对路径,输出文件将成为内部数据文件。当该Model通过write_model()zip_model()保存时,文件会被保存在模型文件夹或函数输出的压缩文件中,此时path会被解释为相对于模型路径的相对路径。如果给定的是绝对路径,输出文件将成为外部数据文件,文件会被保存在模型文件夹或压缩文件之外。

range_参数接受一个字符串,表示Excel范围,例如"A1:D5",或命名范围的名称。当指定命名范围的名称时,sheet参数将被忽略。

keyids 参数用于指定范围中要作为键行和键列的行和列。 keyids 参数接受一个字符串列表,每个元素都是以"r"或"c"开头,后跟一个从0开始的整数。 例如,["r0", "c1"] 表示 range_ 中的第1行和第2列按该顺序被解释为键。 如果未提供 keyids,则所有行和列都将被解释为值行和值列,并且这些值将被分配给从0开始的整数键。

示例

假设以下是Book1.xlsx文件中Sheet1工作表的"A1:D4"区域。

AA

BB

0

11

21

1

12

22

2

13

23

以下代码在空间 space 中创建了一个名为 x 的引用:

>>> xlr = space.new_excel_range("x", "files/Book1.xlsx", "A1:D4",
        sheet="Sheet1", keys=["r0", "c0"], loadpath="Book1.xlsx")

范围内的值可以通过[]运算符访问。keyids参数中的"r0"表示第一行,"c0"表示第一列。 因此传入[]运算符的键取自行和列,例如:

>>> xlr["BB", 1]
22

>>> space.x["BB", 1]
22

>>> dict(xlr)
{('AA', 1): 11,
 ('AA', 2): 12,
 ('AA', 3): 13,
 ('BB', 1): 21,
 ('BB', 2): 22,
 ('BB', 3): 23}

不能在重叠的范围内创建多个ExcelRange对象。 当省略keyids时,会自动分配从0开始的整数键:

>>> xlr2 = space.new_excel_range("y", "files/Book1.xlsx", "B2:D4",
        sheet="Sheet1", loadpath="Book1.xlsx")
ValueError: cannot add spec

>>> del space.x

>>> xlr2 = space.new_excel_range("y", "files/Book1.xlsx", "B2:D4",
        sheet="Sheet1", loadpath="Book1.xlsx")

>>> dict(xlr2)
{(0, 0): 11, (0, 1): 21, (1, 0): 12, (1, 1): 22, (2, 0): 13, (2, 1): 23}

注意

该方法从Excel文件中读取和写入数值,而非公式。对于loadpath文件中的公式单元格,将读取文件中存储的最后保存值。

Parameters:
  • name – 无参数引用的名称或Cells对象名称。

  • path – 输出Excel文件的路径。 可以是str或类似路径的对象。

  • range (str) – 范围表达式,例如"A1:D5",或命名的范围名称字符串。

  • sheet – 范围所在的工作表名称。当向range_提供一个命名范围时,此参数将被忽略。

  • keyids (可选) – 一个指定哪些行和列应被解释为键的列表。例如,['r0', 'c0']表示 第一行和第一列应按该顺序被解释为键。

  • loadpath (可选) - 输入Excel文件的路径。

另请参阅

ExcelRange iospecs

在0.9.0版本中新增。