使用openpyxl读取一个EXCEL文件获取的sheet内容转为dataframe再使用pandas另存为新的文件发现新文件的单元格包含原文件没有的_x000D_
时间: 2023-12-03 15:45:48 浏览: 361
这个问题通常是由于源文件中包含回车符(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_` 了。
相关问题
openpyxl 读取单元格区域
openpyxl是一个用于处理Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。如果你想要使用openpyxl读取Excel文件中的特定单元格区域,你可以按照以下步骤操作:
1. 首先,你需要安装openpyxl模块,可以使用pip来安装:
```
pip install openpyxl
```
2. 然后,导入`pandas`或`openpyxl`库,因为openpyxl库本身并不直接支持DataFrame操作,我们通常会结合`pandas`一起使用,因为它更方便数据处理。
```python
import pandas as pd
from openpyxl import load_workbook
```
3. 加载Excel工作簿:
```python
wb = load_workbook('your_file.xlsx')
sheet_name = 'Sheet1' # 更改为你需要的sheet名称
ws = wb[sheet_name]
```
4. 通过行和列索引来指定区域,例如,如果你想读取A1到D4这个矩形区域的数据,可以这样做:
```python
cell_range = ws['A1':'D4']
data_list = [[cell.value for cell in row] for row in cell_range]
```
这将返回一个二维列表,每一行对应一个四元组,包含了区域内所有单元格的内容。
5. 如果你想将数据转换成pandas DataFrame以便于进一步处理,可以:
```python
df = pd.DataFrame(data_list)
```
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}的'语文'分数为空")
```
这会打印出所有语文成绩为空的行编号。
阅读全文
相关推荐
















