赞
踩
目录
3-23、xlrd.sheet.Sheet.cell_value方法
3-24、xlrd.sheet.Sheet.cell_type方法
3-25、xlrd.sheet.Sheet.row_values方法
3-26、xlrd.sheet.Sheet.get_rows方法
3-27、xlrd.xldate.xldate_as_tuple函数
在Excel中,通常所说的“情侣键”并非官方术语,而是对某些常用且经常成对出现的快捷键的一种形象化的称呼。其中,最为人熟知和广泛使用的“情侣键”是“Ctrl+C”和“Ctrl+V”。
1、Ctrl+C:这个快捷键的作用是“拷贝”或“复制”。当你在Excel中选中某个单元格、一行、一列或整个工作表的内容后,按下Ctrl+C键,这些内容就会被复制到计算机的剪贴板中,等待下一步的粘贴操作。
2、Ctrl+V:这个快捷键的作用是“粘贴”。在你按下Ctrl+C键将内容复制到剪贴板后,可以通过按下Ctrl+V键将这些内容粘贴到Excel中的另一个位置,这两个操作经常是连续进行的,因此Ctrl+C和Ctrl+V就像一对“情侣”,总是成对出现。
除了这对常见的“情侣键”外,Excel中还有许多其他的快捷键可以帮助用户更高效地完成各种操作。然而,这些快捷键通常并没有像Ctrl+C和Ctrl+V那样形成特定的“情侣”关系。
然而,今天我不再展开介绍“情侣键”,而是要重点推介Python中的“情侣库”,即xlrd和xlwt两个第三方库。
xlrd库是一种用于在Python中读取Excel文件的库,它的名称中的"xl"代表Excel,"rd"代表读取,其开发者是John Machin(注:库名字符拆分诠释,只是一种猜测)。
xlrd最初是在2005年开始开发的,是基于Python的开源项目(下载:xlrd库官网下载)。
由于Excel文件在数据处理和分析中的重要性,xlrd库填补了Python在处理Excel文件方面的空白,使得用户可以方便地在Python环境中读取Excel文件的内容,并进行进一步的数据操作和分析。
xlrd库支持多种Excel文件格式,包括`.xls`和`.xlsx`(在旧版本中),这使得无论数据存储在哪种格式的Excel文件中,用户都可以使用xlrd库来读取。
xlrd库使用C语言编写,因此其性能非常高,即使面对非常大的Excel文件,xlrd也可以快速地读取其中的数据。
xlrd是完全开源的,可以在GitHub等平台上找到其源代码,这使得任何人都可以根据自己的需求对其进行修改和扩展。
xlrd提供了简单直接的API来获取单元格数据、行列数等,使得从Excel文件中读取数据变得简单而高效。
xlrd库适配多种Python版本,包括Python 2.7(不包括3.0-3.3)或Python 3.4及以上版本,这为用户提供了广泛的兼容性选择。
在xlrd 1.2.0之后的版本中(大约从2020年开始),xlrd库不再支持`.xlsx`文件格式,这限制了xlrd在新版Excel文件(主要是`.xlsx`格式)上的应用。
xlrd库主要专注于从Excel文件中读取数据,而不提供写入或修改Excel文件的功能,这使得在处理需要写入或修改Excel文件的任务时,用户需要结合其他库(如`openpyxl`或`xlwt`)使用。
由于xlrd库主要关注于读取Excel文件的功能,并且随着`.xlsx`格式的普及,其使用范围逐渐缩小,因此,xlrd库的更新和维护频率可能相对较低。
在某些情况下,xlrd库可能需要依赖外部资源或库来完全发挥其功能,这可能会增加用户在使用xlrd库时的复杂性和不确定性。
总之,xlrd库在读取Excel文件方面具有高效、开源和简单易用等优点,但在对`.xlsx`格式的支持、功能单一以及更新和维护频率等方面存在一些缺点,用户在选择使用xlrd库时需要根据自己的需求进行权衡和选择。
xlrd库适配的Python版本根据库的不同版本而有所不同。以下是针对几个主要版本的说明:
1-1、适配Python>=2.7(不包括3.0-3.3)或Python>=3.4。
1-2、该版本支持xlsx文件格式,并且是一个广泛使用的版本,因为它能够处理小到中等大小的Excel文件,并且具有较好的性能表现。
2-1、适配Python>=2.7(不包括3.0-3.5)或Python>=3.6。
2-2、该版本不再支持xlsx文件格式,仅支持旧版的xls文件格式,因为在xlrd 2.0版本之后,xlrd移除了对xlsx格式的支持。
xlrd3是xlrd的开源扩展库,提供了对xlsx文件格式的支持,然而,请注意,xlrd3并不是xlrd的官方名称(下载:GitHub - Dragon2fly/xlrd3)。
用print()和dir()两个函数获取xlrd库所有属性和方法的列表
- # ['Book', 'FILE_FORMAT_DESCRIPTIONS', 'FMLA_TYPE_ARRAY', 'FMLA_TYPE_CELL', 'FMLA_TYPE_COND_FMT', 'FMLA_TYPE_DATA_VAL',
- # 'FMLA_TYPE_NAME', 'FMLA_TYPE_SHARED', 'Operand', 'PEEK_SIZE', 'Ref3D', 'XLDateError', 'XLRDError', 'XLS_SIGNATURE',
- # 'XL_CELL_BLANK', 'XL_CELL_BOOLEAN', 'XL_CELL_DATE', 'XL_CELL_EMPTY', 'XL_CELL_ERROR', 'XL_CELL_NUMBER', 'XL_CELL_TEXT', 'ZIP_SIGNATURE',
- # '__VERSION__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__',
- # '__spec__', '__version__',
- # 'biff_text_from_num', 'biffh', 'book', 'cellname', 'cellnameabs', 'colname', 'compdoc', 'count_records', 'decompile_formula',
- # 'dump', 'dump_formula', 'empty_cell', 'error_text_from_code', 'evaluate_name_formula', 'formatting', 'formula', 'info',
- # 'inspect_format', 'oBOOL', 'oERR', 'oNUM', 'oREF', 'oREL', 'oSTRG', 'oUNK', 'okind_dict', 'open_workbook', 'open_workbook_xls',
- # 'os', 'pprint', 'rangename3d', 'rangename3drel', 'sheet', 'sys', 'timemachine', 'xldate', 'xldate_as_datetime', 'xldate_as_tuple', 'zipfile']
用help()函数获取xlrd库的帮助信息
- Help on package xlrd:
-
- NAME
- xlrd
-
- DESCRIPTION
- # Copyright (c) 2005-2012 Stephen John Machin, Lingfo Pty Ltd
- # This module is part of the xlrd package, which is released under a
- # BSD-style licence.
-
- PACKAGE CONTENTS
- biffh
- book
- compdoc
- formatting
- formula
- info
- sheet
- timemachine
- xldate
-
- FUNCTIONS
- count_records(filename, outfile=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)
- For debugging and analysis: summarise the file's BIFF records.
- ie: produce a sorted file of ``(record_name, count)``.
-
- :param filename: The path to the file to be summarised.
- :param outfile: An open file, to which the summary is written.
-
- dump(filename, outfile=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, unnumbered=False)
- For debugging: dump an XLS file's BIFF records in char & hex.
-
- :param filename: The path to the file to be dumped.
- :param outfile: An open file, to which the dump is written.
- :param unnumbered: If true, omit offsets (for meaningful diffs).
-
- inspect_format(path=None, content=None)
- Inspect the content at the supplied path or the :class:`bytes` content provided
- and return the file's type as a :class:`str`, or ``None`` if it cannot
- be determined.
-
- :param path:
- A :class:`string <str>` path containing the content to inspect.
- ``~`` will be expanded.
-
- :param content:
- The :class:`bytes` content to inspect.
-
- :returns:
- A :class:`str`, or ``None`` if the format cannot be determined.
- The return value can always be looked up in :data:`FILE_FORMAT_DESCRIPTIONS`
- to return a human-readable description of the format found.
-
- open_workbook(filename=None, logfile=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, verbosity=0, use_mmap=True, file_contents=None, encoding_override=None, formatting_info=False, on_demand=False, ragged_rows=False, ignore_workbook_corruption=False)
- Open a spreadsheet file for data extraction.
-
- :param filename: The path to the spreadsheet file to be opened.
-
- :param logfile: An open file to which messages and diagnostics are written.
-
- :param verbosity: Increases the volume of trace material written to the
- logfile.
-
- :param use_mmap:
-
- Whether to use the mmap module is determined heuristically.
- Use this arg to override the result.
-
- Current heuristic: mmap is used if it exists.
-
- :param file_contents:
-
- A string or an :class:`mmap.mmap` object or some other behave-alike
- object. If ``file_contents`` is supplied, ``filename`` will not be used,
- except (possibly) in messages.
-
- :param encoding_override:
-
- Used to overcome missing or bad codepage information
- in older-version files. See :doc:`unicode`.
-
- :param formatting_info:
-
- The default is ``False``, which saves memory.
- In this case, "Blank" cells, which are those with their own formatting
- information but no data, are treated as empty by ignoring the file's
- ``BLANK`` and ``MULBLANK`` records.
- This cuts off any bottom or right "margin" of rows of empty or blank
- cells.
- Only :meth:`~xlrd.sheet.Sheet.cell_value` and
- :meth:`~xlrd.sheet.Sheet.cell_type` are available.
-
- When ``True``, formatting information will be read from the spreadsheet
- file. This provides all cells, including empty and blank cells.
- Formatting information is available for each cell.
-
- Note that this will raise a NotImplementedError when used with an
- xlsx file.
-
- :param on_demand:
-
- Governs whether sheets are all loaded initially or when demanded
- by the caller. See :doc:`on_demand`.
-
- :param ragged_rows:
-
- The default of ``False`` means all rows are padded out with empty cells so
- that all rows have the same size as found in
- :attr:`~xlrd.sheet.Sheet.ncols`.
-
- ``True`` means that there are no empty cells at the ends of rows.
- This can result in substantial memory savings if rows are of widely
- varying sizes. See also the :meth:`~xlrd.sheet.Sheet.row_len` method.
-
-
- :param ignore_workbook_corruption:
-
- This option allows to read corrupted workbooks.
- When ``False`` you may face CompDocError: Workbook corruption.
- When ``True`` that exception will be ignored.
-
- :returns: An instance of the :class:`~xlrd.book.Book` class.
-
- DATA
- FILE_FORMAT_DESCRIPTIONS = {'xls': 'Excel xls', 'xlsb': 'Excel 2007 xl...
- FMLA_TYPE_ARRAY = 4
- FMLA_TYPE_CELL = 1
- FMLA_TYPE_COND_FMT = 8
- FMLA_TYPE_DATA_VAL = 16
- FMLA_TYPE_NAME = 32
- FMLA_TYPE_SHARED = 2
- PEEK_SIZE = 8
- XLS_SIGNATURE = b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1'
- XL_CELL_BLANK = 6
- XL_CELL_BOOLEAN = 4
- XL_CELL_DATE = 3
- XL_CELL_EMPTY = 0
- XL_CELL_ERROR = 5
- XL_CELL_NUMBER = 2
- XL_CELL_TEXT = 1
- ZIP_SIGNATURE = b'PK\x03\x04'
- __VERSION__ = '2.0.1'
- biff_text_from_num = {0: '(not BIFF)', 20: '2.0', 21: '2.1', 30: '3', ...
- empty_cell = empty:''
- error_text_from_code = {0: '#NULL!', 7: '#DIV/0!', 15: '#VALUE!', 23: ...
- oBOOL = 3
- oERR = 4
- oNUM = 2
- oREF = -1
- oREL = -2
- oSTRG = 1
- oUNK = 0
- okind_dict = {-2: 'oREL', -1: 'oREF', 0: 'oUNK', 1: 'oSTRG', 2: 'oNUM'...
-
- VERSION
- 2.0.1
-
- FILE
- e:\python_workspace\pythonproject\lib\site-packages\xlrd\__init__.py
- cell_value(self, rowx, colx)
- Value of the cell in the given row and column.
3-23-2-1、self(必须):一个对实例对象本身的引用,在类的所有方法中都会自动传递。
3-23-2-2、rowx(必须):一个整数,表示行索引。
3-23-2-3、colx(必须):一个整数,表示列索引。
用于从Excel工作簿(workbook)的一个工作表(sheet)中获取单元格的值。
返回单元格中的值,这取决于单元格的内容,它可能是一个数字、字符串、日期、布尔值、空值(None)或公式的结果(如果单元格包含公式)。
无
- # 23、xlrd.sheet.Sheet.cell_value方法
- import xlrd
- # 打开一个工作簿
- workbook = xlrd.open_workbook('example.xls')
- # 选择一个工作表
- sheet = workbook.sheet_by_index(0) # 或者使用 sheet_by_name('Sheet1')
- # 获取单元格的值
- cell_value = sheet.cell_value(rowx=0, colx=0) # 获取第一行第一列的值
- cell_type(self, rowx, colx)
- Type of the cell in the given row and column.
-
- Refer to the documentation of the :class:`Cell` class.
3-24-2-1、self(必须):一个对实例对象本身的引用,在类的所有方法中都会自动传递。
3-24-2-2、rowx(必须):一个整数,表示行索引。
3-24-2-3、colx(必须):一个整数,表示列索引。
用于确定Excel单元格的数据类型。
返回值是一个整数,表示单元格的数据类型。
xlrd 定义了以下的数据类型编号:
0: 空值 (empty)
1: 字符串 (string)
2: 数字 (number)
3: 日期 (date)
4: 布尔值 (boolean)
5: 错误值 (error)
6: 空单元格(但实际上,这个编号不常用,因为空单元格通常返回类型0)
无
- # 24、xlrd.sheet.Sheet.cell_type方法
- import xlrd
- # 打开一个工作簿
- workbook = xlrd.open_workbook(r'E:\360Downloads\test.xls')
- # 选择一个工作表
- sheet = workbook.sheet_by_index(0)
- # 获取单元格的类型
- cell_type = sheet.cell_type(rowx=1, colx=1) # 注意:这里使用了 sheet.cell_type,但实际上应该使用 xlrd.xldate.xldate_as_tuple 等函数
- # 根据返回值判断单元格类型
- if cell_type == 0:
- print("单元格为空")
- elif cell_type == 1:
- print("单元格是字符串")
- elif cell_type == 2:
- print("单元格是数字")
- elif cell_type == 3:
- print("单元格是日期")
- elif cell_type == 4:
- print("单元格是布尔值")
- elif cell_type == 5:
- print("单元格是错误值")
- else:
- print("未知类型")
- # 注意:实际使用中,你可能需要直接调用 xlrd 的其他函数来获取日期或布尔值等,而不是仅通过 cell_type
- row_values(self, rowx, start_colx=0, end_colx=None)
- Returns a slice of the values of the cells in the given row.
3-25-2-1、self(必须):一个对实例对象本身的引用,在类的所有方法中都会自动传递。
3-25-2-2、rowx(必须):一个整数,表示要获取数据的行的索引。
3-25-2-3、start_colx(可选):一个整数,表示起始列索引,默认值为0。
3-25-2-4、end_colx(可选):一个整数,表示结束列索引,默认值为None。
用于获取指定行的所有单元格的值。
一个列表,包含指定行的所有单元格的值。
3-25-5-1、如果单元格为空,则对应列表中的值为空字符串('')或者None(取决于xlrd的版本和配置)。
3-25-5-2、返回的列表中的元素顺序与Excel表中单元格的顺序相同(从左到右)。
- # 25、xlrd.sheet.Sheet.row_values方法
- import xlrd
- # 打开 Excel 文件
- workbook = xlrd.open_workbook(r'E:\360Downloads\test.xls')
- # 选择工作表
- sheet = workbook.sheet_by_index(0)
- # 假设我们要获取第一行的所有单元格值(行的索引是1)
- row_index = 1
- row_values = sheet.row_values(row_index)
- # 打印第一行的所有单元格值
- print(row_values) # 输出:['Lucy', 'Myelsa', 'Jimmy', 'Bruce']
- get_rows(self)
- Returns a generator for iterating through each row.
3-26-2-1、self(必须):一个对实例对象本身的引用,在类的所有方法中都会自动传递。
用于从Excel工作表中获取行数据。
返回一个迭代器(在Python中通常是一个生成器),该迭代器产生一系列的行对象。
无
- # 26、xlrd.sheet.Sheet.get_rows方法
- import xlrd
- # 打开Excel文件
- workbook = xlrd.open_workbook(r'E:\360Downloads\test.xls')
- # 选择工作表
- sheet = workbook.sheet_by_index(0)
- # 使用get_rows方法获取所有行
- for row_idx, row in enumerate(sheet.get_rows()):
- # row_idx 是当前行的索引(从0开始)
- # row 是一个包含单元格对象的列表
- # 你可以通过索引访问行中的单元格对象
- for col_idx, cell in enumerate(row):
- # col_idx 是当前列的索引(从0开始)
- # cell 是一个单元格对象
- # 获取单元格的值
- cell_value = cell.value
- # 你可以进一步获取单元格的数据类型(ctype)
- cell_type = cell.ctype
- # 打印单元格的值和类型
- print(f"Row {row_idx + 1}, Column {col_idx + 1}: Value = {cell_value}, Type = {cell_type}")
- # 输出:
- # Row 1, Column 1: Value = , Type = 0
- # Row 1, Column 2: Value = , Type = 0
- # Row 1, Column 3: Value = , Type = 0
- # Row 1, Column 4: Value = , Type = 0
- # Row 2, Column 1: Value = Lucy, Type = 1
- # Row 2, Column 2: Value = Myelsa, Type = 1
- # Row 2, Column 3: Value = Jimmy, Type = 1
- # Row 2, Column 4: Value = Bruce, Type = 1
- xldate_as_tuple(xldate, datemode)
- Convert an Excel number (presumed to represent a date, a datetime or a time) into
- a tuple suitable for feeding to datetime or mx.DateTime constructors.
-
- :param xldate: The Excel number
- :param datemode: 0: 1900-based, 1: 1904-based.
- :raises xlrd.xldate.XLDateNegative:
- :raises xlrd.xldate.XLDateAmbiguous:
-
- :raises xlrd.xldate.XLDateTooLarge:
- :raises xlrd.xldate.XLDateBadDatemode:
- :raises xlrd.xldate.XLDateError:
- :returns: Gregorian ``(year, month, day, hour, minute, nearest_second)``.
3-27-2-1、xldate(必须):一个浮点数,表示Excel中的日期或时间。在Excel中,日期和时间是以从某个基准日期(通常是1900年1月0日或1904年1月0日,取决于Excel的版本和设置)开始的天数和小数部分(表示一天中的时间)来表示的。
3-27-2-2、datemode(可选):一个整数,表示Excel使用的日期系统。它有两种可能的值:
0:表示 Excel 使用的是基于1900年的日期系统。这是最常见的设置,特别是在Windows版本的Excel中。
1:表示Excel使用的是基于1904年的日期系统。这通常只在Mac版本的Excel中见到,但在某些特定的Windows应用程序或设置中也可能会遇到。
用于将Excel中的日期数字(通常是浮点数)转换为Python的日期时间元组。
返回一个包含六个元素的元组,表示Python中的日期和时间:(year, month, day, hour, minute, second)。
无
- # 27、xlrd.xldate.xldate_as_tuple函数
- import xlrd
- # 打开Excel文件
- workbook = xlrd.open_workbook(r'E:\360Downloads\test.xls')
- # 选择工作表
- sheet = workbook.sheet_by_index(0)
- # 假设第一行第一列是一个日期单元格
- xldate = sheet.cell_value(0, 0)
- datemode = workbook.datemode
- # 将Excel日期数字转换为Python日期时间元组
- date_tuple = xlrd.xldate.xldate_as_tuple(xldate, datemode)
- # 打印日期时间元组
- print(date_tuple) # 输出类似(2024, 6, 14, 0, 0, 0)
- # 如果你想要将其转换为 datetime 对象,可以使用 datetime.datetime
- from datetime import datetime
- datetime_object = datetime(*date_tuple[:6])
- print(datetime_object) # 输出类似 2024-06-14 00:00:00
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。