使用openpyxl读取一个EXCEL文件获取的sheet内容转为dataframe再使用pandas另存为新的文件发现新文件的单元格包含原文件没有的_x000D_
时间: 2023-12-03 20:45:48 浏览: 289
这个问题通常是由于源文件中包含回车符(Carriage Return)或换行符(Line Feed)引起的,这些符号在不同操作系统和软件中的显示方式可能会有所不同。
你可以尝试使用 `strip()` 函数去除这些符号,然后再另存为新的文件。具体步骤如下:
```python
import openpyxl
import pandas as pd
# 打开源文件
workbook = openpyxl.load_workbook('source.xlsx')
# 读取指定的 sheet
worksheet = workbook['Sheet1']
# 将 sheet 转为 dataframe
data = worksheet.values
columns = next(data)[1:]
df = pd.DataFrame(data, columns=columns)
# 去除回车符和换行符
df = df.replace('\r\n', '', regex=True)
# 另存为新文件
df.to_excel('new_file.xlsx', index=False)
```
这样处理后,新文件中的单元格就不会包含 `_x000D_` 了。
相关问题
python pandas读取excel单元格内容
在Python中,可以使用Pandas库结合`read_excel`函数读取Excel表格的内容。下面是如何读取指定行和列的示例[^1]:
```python
# 导入pandas库
import pandas as pd
# 指定文件路径和工作表名称
excel_path = "your_excel_file.xlsx" # 替换为实际的文件路径
sheet_name = "表1"
# 使用pandas读取Excel文件并选择特定行列
df = pd.read_excel(excel_path, engine='openpyxl', sheet_name=sheet_name)
# 如果你想读取特定单元格(例如A2),可以使用`.iat`属性
# 假设A列的第一行对应索引0,那么A2单元格就是df.iat[0, 0]
one_cell = df.iat[0, 0]
print("A2单元格的内容:", one_cell)
```
要判断Excel单元格中的数值是否为空,你可以使用`isnull()`或`isna()`函数[^2]:
```python
# 加载Excel数据到DataFrame
data = pd.read_excel(excelPath)
# 遍历DataFrame的每一行
for i in data.index:
# 获取特定列(如'语文'列)的数据
score = data.loc[i, '语文']
# 判断分数是否为空
if pd.isnull(score) or pd.isna(score):
print(f"单元格{i+1}的'语文'分数为空")
```
这会打印出所有语文成绩为空的行编号。
pandas提取excel文件中多个sheet页的特定单元格
在Python的pandas库中,你可以使用`read_excel`函数从Excel文件中读取多个工作表(sheet),然后通过索引来选择特定的单元格。以下是一个基本步骤:
1. 首先,你需要安装pandas和openpyxl库,如果没有安装,可以使用pip命令安装:
```
pip install pandas openpyxl
```
2. 然后,使用`read_excel`函数读取Excel文件,并指定包含多个sheet的工作簿名,例如`book_name.xlsx`:
```python
import pandas as pd
excel_data = pd.read_excel('book_name.xlsx')
```
这将返回一个字典类型的数据,其中键是sheet的名字,值是对应的DataFrame。
3. 要提取特定的单元格,你可以通过DataFrame的列名和行索引来获取,假设你要找的是A1单元格的内容,它通常对应于列名(或index)的第一个元素和行索引0:
```python
cell_value = excel_data['Sheet1']['A1']
```
如果你想遍历多个sheet并获取所有匹配的单元格,可以创建一个循环:
```python
for sheet_name in excel_data.keys():
for row, col in [('A1', 'B2'), ('C3', 'D4')]: # 替换为你感兴趣的单元格位置
cell_value = excel_data[sheet_name][col]
print(f"Sheet {sheet_name}: ({row}, {col}) has value {cell_value}")
```
记得替换`('A1', 'B2')`这样的元组为你实际需要的单元格坐标。
阅读全文