欢迎各位兄弟 发布技术文章
这里的技术是共享的
python 读取 excel
在 Python 中,你可以使用许多库来读取 Excel 文件。最常用且功能强大的库包括 pandas 和 openpyxl。以下是如何使用这两个库来读取 Excel 文件的示例。
首先,你需要安装 pandas 和 openpyxl(pandas 需要用 openpyxl 来读取 .xlsx 格式文件):
bashpip install pandas openpyxl
pythonimport pandas as pd # 读取 Excel 文件 # 假设你的 Excel 文件名为 "example.xlsx" df = pd.read_excel('example.xlsx', sheet_name='Sheet1') # sheet_name 可以是手机号 或者 sheet 的名字 # 显示数据 print(df)
如果你只想读取 .xlsx 文件并且不需要 pandas,你可以使用 openpyxl。首先,安装 openpyxl:
bashpip install openpyxl
pythonfrom openpyxl import load_workbook # 加载 Excel 文件 workbook = load_workbook('example.xlsx') # 选择工作表 sheet = workbook['Sheet1'] # 或者使用 workbook.active 来选择当前活动的工作表 # 读取单元格的值 for row in sheet.iter_rows(values_only=True): print(row) # 打印每一行的值
若需要读取旧版的 Excel 文件(.xls),可以使用 xlrd 库(注意:从版本 2.0.0 开始,xlrd 不再支持 .xlsx 文件):
bashpip install xlrd
pythonimport xlrd # 打开 Excel 文件 workbook = xlrd.open_workbook('example.xls') # 选择工作表 sheet = workbook.sheet_by_index(0) # 通过索引选择第一个工作表 # 读取数据 for row in range(sheet.nrows): print(sheet.row_values(row)) # 打印每一行的值
使用 pandas 可以非常方便地处理和分析 Excel 文件,尤其是当你的数据集比较大时。
openpyxl 适合于装载和操作较新的 Excel 文件。
xlrd 用于读取旧版的 .xls 文件。
选择适合你需求的库和方法来读取 Excel 文件即可!
python 使用 xlwings 读取 excel
xlwings 是一个非常强大的库,可以用来读取和写入 Excel 文件,并且它的功能与 Excel 的 VBA 可以实现的操作相似。使用 xlwings 读取 Excel 文件时,你可以方便地与 Excel 应用程序进行交互。
首先,你需要安装 xlwings。可以通过以下命令安装:
bashpip install xlwings
以下是如何使用 xlwings 读取 Excel 文件的示例代码:
pythonimport xlwings as xw # 打开 Excel 应用(可见或不可见) app = xw.App(visible=True) # 可选择设置为 False 以隐藏 Excel 窗口 # 打开 Excel 文件 workbook = app.books.open('example.xlsx') # 替换为你的 Excel 文件路径 # 选择工作表 sheet = workbook.sheets['Sheet1'] # 可以根据工作表名称选择,或使用 index 如 workbook.sheets[0] # 读取某个单元格的值 cell_value = sheet.range('A1').value print(f"Value in A1: {cell_value}") # 读取一整列或一整行 column_values = sheet.range('A1:A10').value # 读取 A1 到 A10 的值 print(column_values) # 读取多个单元格的值 values = sheet.range('A1:B5').value # 读取 A1 到 B5 的值 print(values) # 最后不要忘记关闭工作簿和 Excel 应用程序 workbook.close() # 如果你想在 Excel 中保留文件,请设置 save=False app.quit() # 退出 Excel 应用
导入库:首先需要导入 xlwings.
打开 Excel 应用程序:通过 xw.App() 可以选择是否要让 Excel 窗口可见。
打开工作簿:使用 app.books.open() 方法打开指定的 Excel 文件。
选择工作表:通过 workbook.sheets 可以按照名称或索引选择工作表。
读取单元格的值:使用 sheet.range() 方法可以选择特定的单元格或区域并读取其值。
关闭工作簿和应用程序:在完成操作后,确保关闭工作簿和 Excel 应用,以释放资源。
Excel 依赖:xlwings 依赖于安装在电脑上的 Excel,因此在无 Excel 的环境(如某些服务器)中无法运行。
COM 接口:在 Windows 上使用 xlwings 时,它会通过 COM 接口与 Excel 进行交互。
性能:对于大型数据集,xlwings 的性能可能不如 pandas 等库,因此使用它时请保持合理的数据量。
通过这些步骤,你就可以使用 xlwings 来读取 Excel 文件的内容,并且可以进一步处理或分析这些数据。
python 使用 xlwings 读取 example.xlsx 上面 sheet1 上面的A列的所有数据
要使用 xlwings 读取 Excel 文件 example.xlsx 中 Sheet1 上的 A 列的所有数据,你可以按照以下步骤实现。这里将展示如何访问并打印出 A 列的所有数据。
确保你已经安装了 xlwings,如果还未安装,可以使用下面的命令进行安装:
bashpip install xlwings
使用以下代码来读取 A 列的所有数据:
pythonimport xlwings as xw # 启动 Excel 应用程序 app = xw.App(visible=False) # 设置为 False 以隐藏 Excel 窗口,True 以显示 # 打开 Excel 文件 workbook = app.books.open('example.xlsx') # 替换为你的 Excel 文件路径 try: # 选择工作表 sheet = workbook.sheets['Sheet1'] # 选择 Sheet1 # 读取 A 列的所有数据 a_column_data = sheet.range('A:A').value # 获取 A 列的所有数据 # 打印读取到的数据(去掉 None 值) for value in a_column_data: if value is not None: # 输出非空值 print(value) finally: # 关闭工作簿和 Excel 应用程序 workbook.close() app.quit()
导入库:导入 xlwings 库。
启动 Excel 应用程序:使用 xw.App(visible=False) 启动 Excel 应用程序,这里设置为不可见。
打开工作簿:用 app.books.open('example.xlsx') 打开指定的 Excel 文件。
选择工作表:用 workbook.sheets['Sheet1'] 选择名为 Sheet1 的工作表。
读取 A 列的所有数据:使用 sheet.range('A:A').value 读取整个 A 列的数据,包括所有行。
打印数据:遍历读取到的 A 列数据并打印非空值。你可以根据需要调整打印逻辑,比如输出的格式等。
关闭工作簿和应用程序:在完成操作后,确保关闭工作簿和 Excel 应用程序,以释放资源。
确保 example.xlsx 文件存在且路径正确。
如果你的 Excel 文件包含大量数据,读取整列可能会影响性能。在这种情况下,你可以根据实际需要限制读取的范围,比如 sheet.range('A1:A100').value 来只读取前 100 行。
# 最后不要忘记关闭工作簿和 Excel 应用程序 workbook.close() # 如果你想在 Excel 中保留文件,请设置 save=False app.quit() # 退出 Excel 应用
在使用 Python 操作 Excel 文件时,通常会使用第三方库,如 xlwings、openpyxl、pandas 等。根据你的代码示例,看来你是在使用 xlwings,它用于与 Excel 进行交互。你的代码段提到了关闭工作簿和 Excel 应用程序,下面是如何正确实施这些操作的具体示例。
以下是一个完整的示例,展示如何创建一个 Excel 文件,进行一些操作,然后正确关闭工作簿和 Excel 应用程序:
pythonimport xlwings as xw # 创建一个新的 Excel 应用 app = xw.App(visible=True) # 如果想要隐藏Excel界面,设置visible=False # 添加一个工作簿 workbook = app.books.add() # 在工作簿中进行一些操作 sheet = workbook.sheets[0] sheet.range("A1").value = "Hello" sheet.range("A2").value = "World" # 保存工作簿,如果想指定保存路径,请使用 workbook.save('<your_file_path>.xlsx') workbook.save("example.xlsx") # 关闭工作簿,如果你想在 Excel 中保留文件,请使用 save=False workbook.close() # 这里可以选择是否保存,,,,,事实上是 保存文件并关闭 #workbook.close(save=False) # 如果不想保存文件,事实上是 保存文件不关闭 # 退出 Excel 应用 app.quit()
创建 Excel 应用:使用 xw.App() 创建一个 Excel 应用的实例。可以通过设置 visible=True 来使 Excel 窗口可见,或者设置为 False 以隐藏窗口。
添加工作簿:使用 app.books.add() 方法创建一个新工作簿。
操作工作簿:你可以对工作表进行各种操作,例如写入数据。
保存工作簿:使用 workbook.save("example.xlsx") 保存工作簿到指定路径。你可以省略路径,以便在当前目录下保存。
关闭工作簿:使用 workbook.close() 方法关闭工作簿。如果你希望不保存更改,可以使用 workbook.close(save=False)。
退出 Excel 应用程序:使用 app.quit() 退出 Excel 应用程序。这是确保释放资源的重要步骤,尤其在处理大量数据时。
确保在结束后调用 app.quit(),以避免 Excel 实例在后台继续运行而未被释放。
以上示例需要安装 xlwings 库。可以通过 pip install xlwings 来安装。
这样,你就可以安全有效地完成对 Excel 文件的操作并确保资源得到清理了。
excel 中数据是上面 这样子的 个人工号 主管工号 通过 python xlwings 模块 追加下面的数据到 excel [ { "field_person_gh": "11111", "field_manager_gh": "2222" }, { "field_person_gh": "555555", "field_manager_gh": "33333", } ]
如果不使用 with 语句来管理 xlwings 应用程序的上下文,您可以手动控制 Excel 应用程序的启动和关闭。以下是一个不使用 with 的示例代码,同时增加了异常处理:
pythonimport xlwings as xw # 假设您的 Excel 文件名为 'data.xlsx' excel_file = 'data.xlsx' # 下面是您要追加到 Excel 的 JSON 数据 json_data = [ { "field_person_gh": "11111", "field_manager_gh": "2222", }, { "field_person_gh": "555555", "field_manager_gh": "33333", } ] # 将 JSON 数据转换为列表 data = [ [ item["field_person_gh"], item["field_manager_gh"], ] for item in json_data ] app = None wb = None try: # 启动 Excel 应用程序 app = xw.App(visible=True) # 可见或不可见,视情况而定 # 打开 Excel 文件 wb = app.books.open(excel_file) # 打开 Excel 文件 sheet = wb.sheets[0] # 选择第一个工作表 # 获取现有数据的最后一行 #last_row = sheet.range('A' + str(sheet.cells.last_cell.row)).end('up').row last_row = sheet.range('A1').current_region.last_cell.row #我用的是它 #last_row = sheet.range('A1').end('down').row #这个也行
# 获取现有数据的最后一行(根据第一列非空行) #这个也行 #last_row = sheet.range('A1').end('down').row # 如果第一列有空行,我们最好用下面的方式获取最后一行 #if sheet.range('A1').value is None: #last_row = 0 #else: #while sheet.range(f'A{last_row}').value is not None: #last_row += 1
#这个也行
#last_row = 1
#for col in range(1, sheet.used_range.columns.count + 1): # Check each column
#last_row = max(last_row, sheet.cells(sheet.rows.count, col).end('up').row)
#这个也行
#last_row = sheet.cells.last_cell.row
#这个也行
#last_row = sheet.range('A' + str(sheet.cells.last_cell.row)).end('up').row
#这个也行
#last_row = sheet.range('A1').end('down').row
#这个也行
#try:
#last_row = sheet.range('A1').current_region.last_cell.row
#except Exception as e:
#print(f"Error occurred: {e}")
#last_row = 1 # 如果没有数据,默认从第一行开始
# 将新的数据追加到工作表 sheet.range(f'A{last_row + 1}').value = data # 从 last_row+1 行开始写入新数据 # 保存工作簿 wb.save() except Exception as e: print(f"发生错误: {e}") finally: # 确保工作簿和 Excel 应用程序被关闭 if wb: try: wb.close() except Exception as e: print(f"关闭工作簿时发生错误: {e}") if app: try: app.quit() except Exception as e: print(f"关闭 Excel 应用程序时发生错误: {e}")
手动管理 Excel 实例:我们首先定义 app 和 wb 为 None,然后在 try 块内部创建 Excel 应用程序和打开工作簿。
异常处理:
使用 try...except 来捕获在打开文件、写入数据和保存期间可能发生的任何错误,并打印错误信息。
在 finally 块中,检查 wb 和 app 是否被成功创建,以确保在关闭时没有产生错误。
关闭 Excel:在完成操作后,尝试关闭工作簿和 Excel 应用程序,确保清理工作不会在出现错误的时候被忽略。通过捕获可能的错误,您可以保留应用程序稳定性。
这个示例代码演示了如何在不使用 with 的情况下处理 xlwings 的异常处理和资源管理。