openpyxl写入已有数据Excel中的指定某一列不改变Excel文件原有数据
时间: 2024-01-23 13:03:14 浏览: 118
可以通过openpyxl模块中的load_workbook函数来加载已有的Excel文件,并通过指定的列名来写入数据而不影响原有数据。以下是一个示例代码:
```python
import openpyxl
# 加载已有Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
# 获取需要写入的工作表和列
worksheet = workbook['Sheet1']
column = worksheet['A']
# 写入数据到指定列中
for i in range(1, len(column) + 1):
cell = column[i - 1]
cell.value = i
# 保存修改后的Excel文件
workbook.save('example.xlsx')
```
在上面的代码中,我们首先使用load_workbook函数加载了一个名为"example.xlsx"的Excel文件。然后,我们获取了工作表"Sheet1"中的第一列(A列),并通过一个循环将1到列数之间的数字写入到每个单元格中。最后,我们使用save函数将修改后的Excel文件保存回磁盘中。需要注意的是,这个操作会覆盖原有的Excel文件,所以在执行之前最好备份一下原始文件。
相关问题
openpy写入Excel中指定某一列不改变Excel文件原有数据
可以使用openpyxl库中的load_workbook函数来加载已有的Excel文件,然后通过Worksheet对象的cell函数来指定需要修改的单元格,最后使用save函数保存修改后的Excel文件。
但是,为了不改变Excel文件原有数据,我们需要在写入数据时,保留原有数据的值。可以通过Worksheet对象的iter_rows函数来遍历指定列的所有单元格,然后使用value属性获取单元格的值,再将需要修改的单元格的值赋值为新值即可。
下面是一个示例代码:
```python
from openpyxl import load_workbook
# 加载Excel文件
workbook = load_workbook('example.xlsx')
# 获取需要操作的Worksheet对象
worksheet = workbook['Sheet1']
# 遍历指定列的所有单元格
for row in worksheet.iter_rows(min_row=2, min_col=3, max_col=3):
for cell in row:
# 获取单元格的原有值
old_value = cell.value
# 计算新值
new_value = old_value + 1
# 将新值赋值给单元格,保留原有数据的值
cell.value = new_value if old_value else None
# 保存Excel文件
workbook.save('example.xlsx')
```
这段代码会将example.xlsx文件中第3列的所有单元格的值加1,并保存为同名文件。在赋值新值时,使用了一个三元表达式来保留原有数据的值。如果原有数据为空,则新值也为空。
pycharm怎么将数据保存在excel指定列中,不覆盖原有数据
在PyCharm中,你可以使用pandas库配合openpyxl或者xlsxwriter等工具来向Excel文件的特定列添加新数据而不覆盖原有的内容。这里我会提供一个基本的例子,假设你已经有了一个DataFrame `df` 要写入到名为 'example.xlsx' 的文件中的 'Sheet1' 的某一列。
如果你使用的是openpyxl:
```python
import pandas as pd
from openpyxl import load_workbook
# 加载现有的Excel工作簿
wb = load_workbook('example.xlsx')
ws = wb['Sheet1']
# 确定你要写入的列索引,例如第2列 (从0开始计数)
column_index = 1
# 将DataFrame的数据写入到指定列
df.to_excel(ws, startcol=column_index, index=False)
# 保存更改
wb.save('example.xlsx')
```
如果你使用的是xlsxwriter:
```python
import pandas as pd
import xlsxwriter
# 创建一个新的workbook并选择工作表
workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet()
# 获取当前行数和列数
row_num = worksheet.get_highest_row()
column_num = worksheet.ncols
# 写入DataFrame的数据,跳过已有的行
for index, row in df.iterrows():
worksheet.write(row_num, column_index, row['your_column_name']) # 替换 'your_column_name' 为你实际的列名
row_num += 1
# 保存工作簿
workbook.close()
```
在这个过程中,如果目标列已经存在数据,它会被新的数据替换。你需要确保所选的列位置与现有数据不会冲突。
阅读全文