Range
- class Range(cell1=None, cell2=None, **options)
返回一个区域对象,可以代表一个单元格,也可以是一个区域。
- 参数:
示例
import xlwings as xw sheet1 = xw.Book("MyBook.xlsx").sheets[0] sheet1.range("A1") sheet1.range("A1:C3") sheet1.range((1,1)) sheet1.range((1,1), (3,3)) sheet1.range("NamedRange") # Or using index/slice notation sheet1["A1"] sheet1["A1:C3"] sheet1[0, 0] sheet1[0:4, 0:4] sheet1["NamedRange"]
- add_comment(text)
Add a plain-text threaded comment to one cell and return its handle.
Raises
TypeErrorfor non-text content andValueErrorfor empty text or a multi-cell range. Excel rejects a second comment on the same cell.- 返回类型:
- add_hyperlink(address, text_to_display=None, screen_tip=None)
在指定的区域(单个单元格)中加一个超链接
- 参数:
address (str) -- 超链接地址。
text_to_display (str | None) -- 超链接的显示字符串,缺省为超链接地址本身。
screen_tip (str | None) -- 当鼠标停留在超链接上方是显示的屏幕提示。缺省情况下设置为'
- 单击一次可跟踪超链接,单击并按住不放选择此单元格。'
在 0.3.0 版本加入.
- add_note(text)
Add a note to this single cell and return it.
Raises
TypeErrorfor non-text content andValueErrorfor empty text, a multi-cell range, or a cell that already has a note.- 返回类型:
- property address: str
Returns a string value that represents the range reference. Use
get_address()to be able to provide parameters.在 0.9.0 版本加入.
- adjust_indent(amount)
Adjusts the indentation in a Range.
- 参数:
amount (int) -- Number of spaces by which the indent is adjusted. Can be positive or negative.
- property api: Any
Returns the native object (
pywin32orappscriptobj) of the engine being used.在 0.9.0 版本加入.
- autofill(destination, type_='fill_default')
Autofills the destination Range. Note that the destination Range must include the origin Range.
- 参数:
destination (Range) -- The origin.
type -- One of the following strings:
"fill_copy","fill_days","fill_default","fill_formats","fill_months","fill_series","fill_values","fill_weekdays","fill_years","growth_trend","linear_trend","flash_fill
在 0.30.1 版本加入.
- property autofilter: AutoFilter
Returns the AutoFilter for this range.
The first row is treated as the header row and
fieldarguments are one-based column positions relative to the range.示例
data = sheet["A1:C100"] data.autofilter.apply_values(1, ["East", "West"]) data.autofilter.apply_comparison(3, "greater_than_or_equal", 10) data.autofilter.clear(1) data.autofilter.clear()
在 0.37.5 版本加入.
- autofit()
使得区域内所有单元格的宽度和高度进行自适应。
To autofit only the width of the columns use
myrange.columns.autofit()To autofit only the height of the rows use
myrange.rows.autofit()
在 0.9.0 版本发生变更.
- property borders: Borders
Returns the
Borderscollection of the range, which gives access to the eight individualBordersides.示例
>>> myrange = sheet["A1:D10"] >>> myrange.borders.line_style = "continuous" # edges + inside borders >>> myrange.borders["edge_bottom"].weight = "thick" >>> myrange.borders.set("outside", line_style="double", color="#ff0000") >>> myrange.borders.clear()
在 0.37.1 版本加入.
- property color: tuple[int, int, int] | None
获取指定区域的背景色。
To set the color, either use an RGB tuple
(0, 0, 0)or a hex string like#efefefor an Excel color constant. To remove the background, set the color toNone, see Examples.示例
>>> import xlwings as xw >>> wb = xw.Book() >>> sheet1 = xw.sheets[0] >>> sheet1.range('A1').color = (255, 255, 255) # or '#ffffff' >>> sheet1.range('A2').color (255, 255, 255) >>> sheet1.range('A2').color = None >>> sheet1.range('A2').color is None True
- Setter type:
tuple[int, int, int] | int | str | None
在 0.3.0 版本加入.
- property column_width: float | None
Gets or sets the width of a Range.
The unit depends on the engine: characters on the classic, locally installed xlwings, where one unit is the width of one character in the Normal style (for proportional fonts, the character 0), and points on xlwings Server and xlwings Lite.
如果区域中的列宽相同,返回宽度。如果各个列宽不同,返回
None。In characters, column_width must be in the range 0 <= column_width <= 255. In points it only has to be positive.
注意: 如果区域不在工作表已经使用的区域内,并且区域内的各列的宽度不同,返回第一列的宽度。
- Setter type:
float
在 0.4.0 版本加入.
- property columns: RangeColumns
Returns a
RangeColumnsobject that represents the columns in the specified range.在 0.9.0 版本加入.
- property comment: Comment | None
The cell's threaded comment. In xlwings Lite, use
await get_comment().
- property conditional_formats: ConditionalFormats
Returns the conditional-format rules for this range.
In xlwings Lite, use
await sheet["A1:D10"].get_conditional_formats()for inspection;sheet["A1:D10"].conditional_formats.clear()remains available.在 0.37.5 版本加入.
- copy(destination=None)
把一个区域拷贝到目的区域或者剪贴板。
- 参数:
destination (Range | None) -- xlwings Range to which the specified range will be copied. If omitted, the range is copied to the clipboard.
- copy_from(source_range, copy_type='all', skip_blanks=False, transpose=False)
A newer variant of copy that replaces copy/paste.
- 参数:
source_range (Range)
copy_type (str) -- One of "all", "formats", "formulas", "link", "values"
skip_blanks (bool)
transpose (bool)
- copy_picture(appearance='screen', format='picture')
Copies the range to the clipboard as picture.
- 参数:
appearance (str) -- Either 'screen' or 'printer'.
format (str) -- Either 'picture' or 'bitmap'.
在 0.24.8 版本加入.
- property current_region: Range
This property returns a Range object representing a range bounded by (but not including) any combination of blank rows and blank columns or the edges of the worksheet. It corresponds to
Ctrl-*on Windows andShift-Ctrl-Spaceon Mac.
- property data_validation: DataValidation
Returns the data validation object for the range.
Use it to create, replace, or remove a validation rule. On xlwings Lite, use
Range.get_data_validation()instead.示例
sheet["A1:A10"].data_validation.set_list(["Open", "Closed"]) sheet["B1:B10"].data_validation.set_list(sheet["D1:D3"]) sheet["C1:C10"].data_validation.set_list(book.names["Statuses"]) sheet["E1:E10"].data_validation.set_whole_number("between", 1, 10) sheet["F1:F10"].data_validation.set_custom("=F1<>""") sheet["A1:A10"].data_validation.delete()
在 0.37.5 版本加入.
- end(direction)
返回区域内的边界单元格,得到的结果与按
Ctrl+Up,Ctrl+down,Ctrl+left, 或Ctrl+right组合键得到的结果相同。- 参数:
direction (str)
- 返回类型:
示例
>>> import xlwings as xw >>> wb = xw.Book() >>> sheet1 = xw.sheets[0] >>> sheet1.range('A1:B2').value = 1 >>> sheet1.range('A1').end('down') <Range [Book1]Sheet1!$A$2> >>> sheet1.range('B2').end('right') <Range [Book1]Sheet1!$B$2>
在 0.9.0 版本加入.
- expand(mode='table')
Expands the range according to the mode provided. Ignores empty top-left cells (unlike
Range.end()).- 参数:
mode (str) -- 可以取
'down','right','table'(=down + right)。- 返回类型:
示例
>>> import xlwings as xw >>> wb = xw.Book() >>> sheet1 = wb.sheets[0] >>> sheet1.range('A1').value = [[None, 1], [2, 3]] >>> sheet1.range('A1').expand().address $A$1:$B$2 >>> sheet1.range('A1').expand('right').address $A$1:$B$1
在 0.9.0 版本加入.
- find(text, *, whole=False, direction='forward', order='rows', match_case=False)
Find the first matching cell in this range, or return
None.Classic xlwings returns the result directly. In xlwings Lite, await the result because Excel must be queried asynchronously. The search starts at the first cell in the requested traversal direction and is restricted to this range.
- 参数:
text (str) -- Text to find. An empty string is not allowed.
whole (bool) -- Match the entire cell rather than part of it.
direction (str) --
"forward"or"backward".order (str) -- Search by
"rows"or"columns".match_case (bool) -- Whether matching is case-sensitive.
- 返回类型:
示例
In desktop Python:
import xlwings as xw sheet = xw.Book().sheets[0] sheet["A1:A3"].value = [["North"], ["South"], ["North"]] found = sheet["A1:A3"].find("South", whole=True) print(found.address if found else None) # $A$2
In xlwings Lite, await the same search:
found = await sheet["A1:A3"].find("South", whole=True)
- get_address(row_absolute=True, column_absolute=True, include_sheetname=False, external=False)
Returns the address of the range in the specified format.
addresscan be used instead if none of the defaults need to be changed.- 参数:
row_absolute (bool) -- 设为
True时,返回行部分的绝对引用。column_absolute (bool) -- 设为
True时,返回列部分的绝对引用。include_sheetname (bool) -- 设为
True时,返回的地址中包含工作表名。如果external=True,不管这里的设置如何,都带工作表名。external (bool) -- 设为
True时,返回带有工作簿名和工作表名的外部引用地址。
- 返回类型:
str
示例
>>> import xlwings as xw >>> wb = xw.Book() >>> sheet1 = wb.sheets[0] >>> sheet1.range((1,1)).get_address() '$A$1' >>> sheet1.range((1,1)).get_address(False, False) 'A1' >>> sheet1.range((1,1), (3,3)).get_address(True, False, True) 'Sheet1!A$1:C$3' >>> sheet1.range((1,1), (3,3)).get_address(True, False, external=True) '[Book1]Sheet1!A$1:C$3'
在 0.2.3 版本加入.
- async get_color()
Fetch the fill color on demand, as an RGB tuple.
Returns
Noneif the range has no fill.Requires xlwings Lite.
- 返回类型:
tuple[int, int, int] | None
- async get_colors()
Returns the fill color of every cell as a two-dimensional list.
Each entry is an RGB tuple, or
Nonefor no fill color. The result always has the range's row and column dimensions, including[[color]]for a single cell; conversion options such asndimandtransposedo not affect it.Reads direct cell fills, excluding colors supplied by conditional formatting or table styles. For patterned fills, returns the background fill color, not the pattern color or rendered appearance.
A call supports at most 100,000 cells.
示例
colors = await sheet["A1:B2"].get_colors() # [[(255, 0, 0), None], [(255, 255, 255), (0, 0, 255)]]
See
get_colorfor a single range-level fill color.Requires xlwings Lite.
在 0.37.5 版本加入.
- 返回类型:
list[list[tuple[int, int, int] | None]]
- async get_column_width()
Fetch the column width on demand, in points.
Returns
Noneif the range's columns aren't all the same width.Requires xlwings Lite.
- 返回类型:
float | None
- async get_comment()
Fetch the cell's threaded comment, or
None.Requires xlwings Lite.
- 返回类型:
Comment | None
- async get_conditional_formats()
Fetch the ordered conditional-format rules on demand.
Rules are returned from highest to lowest evaluation priority. Requires xlwings Lite.
在 0.37.5 版本加入.
- 返回类型:
- async get_current_region()
Fetch the current region on demand.
The region bounded by blank rows and columns around this range, i.e.
Ctrl-*.Requires xlwings Lite.
- 返回类型:
- async get_data_validation()
Fetch this range's data-validation rule for the range.
Returns
"none"when the range has no validation,"mixed_criteria"when only some cells have validation, and"inconsistent"when cells have different rules.Requires xlwings Lite.
在 0.37.5 版本加入.
- 返回类型:
- async get_formula()
Fetch formulas on demand.
The returned shape follows the same rules as reading
value: a single cell gives a string, a 1-by-n or n-by-1 range a flat list, and anything else a nested list.options(ndim=...)applies as usual.Requires xlwings Lite.
- 返回类型:
str | list[str] | list[list[str]]
- async get_formula_array()
Fetch the array formula for this range on demand.
A single string, or
Noneif the range holds no array formula. Unlikeget_formula(), this isn't a value per cell.Requires xlwings Lite.
- 返回类型:
str | None
- async get_height()
Fetch the range's height in points, on demand.
Requires xlwings Lite.
- 返回类型:
float
- async get_horizontal_alignment()
Fetch the horizontal alignment on demand.
Noneif the cells in the range don't all have the same alignment.Requires xlwings Lite.
- 返回类型:
str | None
- async get_hyperlink()
Fetch this cell's hyperlink address on demand.
The async equivalent of
hyperlink: same result, including for cells that use aHYPERLINK()formula. Raises if the cell has no hyperlink.Requires xlwings Lite.
- 返回类型:
str
- async get_left()
Fetch the distance from the sheet's left edge, in points, on demand.
Requires xlwings Lite.
- 返回类型:
float
- async get_merge_area()
Fetch the merged range containing this cell, on demand.
Returns this range itself if it isn't part of a merged range.
Requires xlwings Lite.
- 返回类型:
- async get_merge_cells()
Fetch whether this range contains merged cells, on demand.
Trueif the whole range is merged,Falseif none of it is, andNoneif it's only partly merged.Requires xlwings Lite.
- 返回类型:
bool | None
- async get_number_format()
Fetch the number format on demand.
A single format string, or
Noneif the range's cells don't share one.Requires xlwings Lite.
- 返回类型:
str | None
- async get_row_height()
Fetch the row height on demand, in points.
Returns
Noneif the range's rows aren't all the same height.Requires xlwings Lite.
- 返回类型:
float | None
- get_special_cells(cell_type, value_type=None)
Return the rectangular areas of matching cells within this range.
cell_typeis"blanks","constants","formulas", or"visible". For constants or formulas,value_typemay be"numbers","text","logical", or"errors"; omitting it selects all value types. Returns an empty list when no cells match. Desktop Python returns the list directly; in xlwings Lite useawait range.get_special_cells(...).
- async get_table()
Fetch the Table this range is part of, on demand.
Returns
Noneif the range isn't part of a table.Requires xlwings Lite.
- 返回类型:
Table | None
- async get_top()
Fetch the distance from the sheet's top edge, in points, on demand.
Requires xlwings Lite.
- 返回类型:
float
- async get_vertical_alignment()
Fetch the vertical alignment on demand.
Noneif the cells in the range don't all have the same alignment.Requires xlwings Lite.
- 返回类型:
str | None
- async get_wrap_text()
Fetch the wrap text setting on demand.
Noneif the range doesn't have a uniform wrap setting.Requires xlwings Lite.
- 返回类型:
bool | None
- group(by=None)
Group rows or columns.
- 参数:
by (str | None) -- "columns" or "rows". Figured out automatically if the range is defined as '1:3' or 'A:C', respectively.
- property has_array: bool
Trueif the range is part of a legacy CSE Array formula andFalseotherwise.
- property horizontal_alignment: Literal['general', 'left', 'center', 'right', 'fill', 'justify', 'center_across_selection', 'distributed'] | None
Returns or sets the horizontal alignment of the range.
One of
'general','left','center','right','fill','justify','center_across_selection'or'distributed'. ReturnsNoneif the cells in the range don't all have the same alignment. The default is'general', which right-aligns numbers and dates and left-aligns text.Reading this property synchronously requires a locally installed Excel. Setting it is also supported on xlwings Lite and xlwings Server; in xlwings Lite, read it via
get_horizontal_alignment().示例
>>> sheet["A1"].horizontal_alignment = "center" >>> sheet["A1"].horizontal_alignment 'center'
- Setter type:
str
在 0.37.3 版本加入.
- property hyperlink: str
返回指定区域的超链接(仅适合单个单元格)
示例
>>> import xlwings as xw >>> wb = xw.Book() >>> sheet1 = wb.sheets[0] >>> sheet1.range('A1').value 'www.xlwings.org' >>> sheet1.range('A1').hyperlink 'http://www.xlwings.org'
在 0.3.0 版本加入.
- insert(shift, copy_origin='format_from_left_or_above')
在工作表中插入一个单元格或者一个区域。
- 参数:
shift (str) -- Use
rightordown.copy_origin (str) -- Use
format_from_left_or_aboveorformat_from_right_or_below. Note that copy_origin is only supported on Windows.
在 0.30.3 版本发生变更:
shiftis now a required argument.
- property last_cell: Range
返回指定区域的右下角单元格。只读。
示例
>>> import xlwings as xw >>> wb = xw.Book() >>> sheet1 = wb.sheets[0] >>> myrange = sheet1.range('A1:E4') >>> myrange.last_cell.row, myrange.last_cell.column (4, 5)
在 0.3.5 版本加入.
- merge(across=False)
Creates a merged cell from the specified Range object.
- 参数:
across (bool) -- True to merge cells in each row of the specified Range as separate merged cells.
- property merge_area: Range
Returns a Range object that represents the merged Range containing the specified cell. If the specified cell isn't in a merged range, this property returns the specified cell.
- property name: Name | None
获取或者设置区域的名字。
- Setter type:
str
在 0.4.0 版本加入.
- property note: Note | None
Returns a Note object. Before the introduction of threaded comments, a Note was called a Comment.
在 0.24.2 版本加入.
- property number_format: str
获取或者设置区域的数字格式(
number_format)。示例
>>> import xlwings as xw >>> wb = xw.Book() >>> sheet1 = wb.sheets[0] >>> sheet1.range('A1').number_format 'General' >>> sheet1.range('A1:C3').number_format = '0.00%' >>> sheet1.range('A1:C3').number_format '0.00%'
在 0.2.3 版本加入.
- options(convert=None, **options)
Allows you to set a converter and their options. Converters define how Excel Ranges and their values are being converted both during reading and writing operations. If no explicit converter is specified, the base converter is being applied, see
converters.- 参数:
convert (Any) -- A converter, e.g.
dict,np.array,pd.DataFrame,pd.Series, defaults to default converter.- 返回类型:
:keyword ndim: Number of dimensions. :keyword numbers: Type of numbers, e.g.
int. :keyword dates: E.g.datetime.date, defaults todatetime.datetime. :keyword empty: Transformation of empty cells. :keyword transpose: Transpose values. :keyword expand: One of'table','down','right'. :keyword chunksize: Number of rows per chunk when reading or writing large amounts of data, e.g.10000. Large ranges are chunked automatically (reads above 4,000,000 cells, writes above 100,000 cells on desktop Excel and the remote engines); setchunksizeexplicitly to tune the row count, e.g. to prevent timeout, memory or payload-size issues, orchunksize=Noneto disable chunking. Works with all formats, including DataFrames, NumPy arrays, and list of lists. :keyword err_to_str: IfTrue, will include cell errors such as#N/Aas strings. By default, they will be converted toNone. New in version 0.28.0.For converter-specific options, see
converters.
- paste(paste=None, operation=None, skip_blanks=False, transpose=False)
从剪贴板里拷贝一个区域到指定区域
- 参数:
paste (str | None) -- 可以取下列值:
all_merging_conditional_formats,all,all_except_borders,all_using_source_theme,column_widths,comments,formats,formulas,formulas_and_number_formats,validation,values,values_and_number_formats.operation (str | None) -- 可以取下列值: "add", "divide", "multiply", "subtract"。
skip_blanks (bool) -- 设为
True时忽略空白单元格transpose (bool) -- 设为
True时对行列转置
- property raw_value: Any
Gets and sets the values directly as delivered from/accepted by the engine that s being used (
pywin32orappscript) without going through any of xlwings' data cleaning/converting. This can be helpful if speed is an issue but naturally will be engine specific, i.e. might remove the cross-platform compatibility.
- remove_duplicates(columns, has_headers=False)
Remove duplicate rows within this range, keeping the first occurrence.
- 参数:
columns (int | Sequence[int]) -- One-based column positions within this range used to identify duplicates.
has_headers (bool) -- Keep the first row as a header.
Only cells inside this range are shifted. Ranges intersecting an Excel table are not supported. On macOS this method isn't supported and raises
NotImplementedError.
- replace_all(old, new, *, whole=False, match_case=False)
Replace matching text within this range.
An empty replacement string is allowed; an empty search string is not.
示例
import xlwings as xw sheet = xw.Book().sheets[0] sheet["A1:A2"].value = [["Draft"], ["Draft report"]] sheet["A1:A2"].replace_all("Draft", "Final") print(sheet["A2"].value) # Final report
- resize(row_size=None, column_size=None)
重新调整指定区域的大小。
- 参数:
row_size (int | None) -- 新的区域的行数(如果为
None, 区域保持原来的行数不变)。column_size (int | None) -- 新的区域的列数(如果为
None, 区域保持原来的列数不变)。
- 返回类型:
在 0.3.0 版本加入.
- property row_height: float | None
取得或者设置区域的行高,单位是
point。 如果区域内所有的行高度都一样,就返回这个高度。如果不一样,就返回None。row_height必须在下列范围内: 0 <= row_height <= 409.5
注意:如果区域不在工作表已用区域内并且行高不同,返回第一行的高度。
- Setter type:
float
在 0.4.0 版本加入.
- property rows: RangeRows
Returns a
RangeRowsobject that represents the rows in the specified range.在 0.9.0 版本加入.
- set_colors(colors)
Set direct fill colors cell by cell without changing cell contents.
colorsmust be a two-dimensional matrix exactly matching the range's shape, including[[color]]for one cell. An RGB tuple or list or a#RRGGBBhex string.Noneremoves the fill;...leaves that cell's existing fill unchanged. Conversion options do not change the required matrix shape.示例
sheet["A1:C1"].set_colors([[(0, 128, 0), ..., None]])
在 0.37.5 版本加入.
- property sheet: Sheet
返回区域所属的工作表对象。
在 0.9.0 版本加入.
- sort(keys, ascending=True, has_headers=False)
Sort the rows of this rectangular range by one or more columns.
- 参数:
keys (int | Sequence[int]) -- One-based column positions within this range, in priority order.
ascending (bool | Sequence[bool]) -- One direction for every key, or one boolean per key.
has_headers (bool) -- Whether to keep the first row in place as a header.
The range is not expanded to adjacent data. Ranges intersecting an Excel table are not supported.
示例
sheet["A1:D20"].sort([2, 1], [False, True], has_headers=True)
- property table: Table | None
Returns a Table object if the range is part of one, otherwise
None.在 0.21.0 版本加入.
- to_pdf(path=None, layout=None, show=None, quality='standard')
Exports the range as PDF.
- 参数:
path (str | PathLike[str] | None) -- Path where you want to store the pdf. Defaults to the address of the range in the same directory as the Excel file if the Excel file is stored and to the current working directory otherwise.
layout (str | PathLike[str] | None) -- This argument requires xlwings
PRO. Path to a PDF file on which the report will be printed. This is ideal for headers and footers as well as borderless printing of graphics/artwork. The PDF file either needs to have only 1 page (every report page uses the same layout) or otherwise needs the same amount of pages as the report (each report page is printed on the respective page in the layout PDF).show (bool | None) -- Once created, open the PDF file with the default application.
quality (str) -- Quality of the PDF file. Can either be
'standard'or'minimum'.
- 返回类型:
str
在 0.26.2 版本加入.
- to_png(path=None)
Exports the range as PNG picture.
- 参数:
path (str | PathLike[str] | None) -- Path where you want to store the picture. Defaults to the name of the range in the same directory as the Excel file if the Excel file is stored and to the current working directory otherwise.
在 0.24.8 版本加入.
- ungroup(by=None)
Ungroup rows or columns
- 参数:
by (str | None) -- "columns" or "rows". Figured out automatically if the range is defined as '1:3' or 'A:C', respectively.
- property value: Any
Gets and sets the values for the given Range. See
xlwings.Range.optionsabout how to set options, e.g., to transform it into a DataFrame or how to set a chunksize.
- property vertical_alignment: Literal['top', 'center', 'bottom', 'justify', 'distributed'] | None
Returns or sets the vertical alignment of the range.
One of
'top','center','bottom','justify'or'distributed'. ReturnsNoneif the cells in the range don't all have the same alignment. The default is'bottom'.Reading this property synchronously requires a locally installed Excel. Setting it is alos supported with xlwings Lite and xlwings Server; in xlwings Lite, read it via
get_vertical_alignment().示例
>>> sheet["A1"].vertical_alignment = "top" >>> sheet["A1"].vertical_alignment 'top'
- Setter type:
str
在 0.37.3 版本加入.