已经创建好了一个workbook包括表头、样式 、单元格、sheet均创建好了,且里面存有数据,以下代码如何继续往workbook中添加数据 public void appendDateToSheet(Workbook workbook, Collection<?> dataSet){ workbook.getSheetAt(0); }
时间: 2023-12-26 11:04:16 浏览: 48
你可以使用以下代码来实现向工作簿中添加数据:
```
public void appendDataToSheet(Workbook workbook, Collection<?> dataSet) {
Sheet sheet = workbook.getSheetAt(0);
int lastRowNum = sheet.getLastRowNum();
for (Object data : dataSet) {
Row row = sheet.createRow(lastRowNum + 1);
Cell cell = row.createCell(0);
cell.setCellValue(data.toString());
}
}
```
这段代码假定你要向工作簿的第一个sheet中添加数据,数据集合中每个元素都是一个对象,需要将其转换为String类型。它会在sheet中找到最后一行的行号,然后在其下方创建一行,并在第一列中添加数据。你可以根据自己的数据类型和需求进行修改。
相关问题
# import pandas as pd # df = pd.read_excel('sheet.xlsx', engine='openpyxl') # new_df = df.query('id == "220"') # writer = pd.ExcelWriter('new_excel_file.xlsx') # new_df.to_excel(writer, sheet_name='New_Sheet', index=False) # writer.save() import openpyxl # 读取Excel文件 workbook = openpyxl.load_workbook('sheet.xlsx') # 选择需要操作的sheet页 worksheet = workbook['Sheet'] # 根据筛选条件获取满足条件的数据,其中,min_row=2表示从第二行开始读取数据,因为第一行通常是表头; # max_row=worksheet.max_row表示读取Excel文件中所有的行数据;values_only=True表示只读取单元格中的值,而不包括格式等其他元素。 new_data = [] for row in worksheet.iter_rows(min_row=2, max_row=worksheet.max_row, values_only=True): if row[2] == '220': new_data.append(row) # 创建新的sheet页并写入数据 new_worksheet = workbook.create_sheet('New Sheet') for row in new_data: new_worksheet.append(row) # 保存Excel文件 workbook.save('sheet.xlsx')报zipfile.BadZipFile: File is not a zip file
这个错误通常是因为你的 Excel 文件已经被其他程序打开了,或者文件损坏导致的。你可以尝试先关闭 Excel 文件,然后重新运行代码,或者尝试使用另一个 Excel 文件来测试代码是否正常运行。如果问题仍然存在,你可以尝试使用 openpyxl 库提供的 load_workbook() 函数的 data_only 参数,将其设置为 True,这样可以确保仅读取单元格中的值,而不包括公式等其他元素。
使用python代码,对excel文件“临时文件\推送名单.xlsx”操作,遍历此excel的所有sheet,当sheet名为“总行”的时候,读取表头为“接收人工号”,和“推送内容”(这一表头名称是合并单元格,合并的是多列的所在数据)的这些列数据data,定义一个字符串strtext,一个字典dictext,遍历数据data(每行对于表头为“推送内容”的这些单元格数据,进行字符串符拼接(这些单元格里文本数据有可能换行)生成strtext(作为字典dictext的value值),把每行的“接收人工号”列的单元格数据作为字典dictext的key值,继续遍历next并重置字符串strtext)相关所有代码
好的,以下是代码实现:
```python
import openpyxl
# 打开Excel文件
workbook = openpyxl.load_workbook('临时文件\\推送名单.xlsx')
# 遍历所有sheet
for sheetname in workbook.sheetnames:
if sheetname == '总行':
worksheet = workbook[sheetname]
# 获取表头
header = []
for cell in worksheet[1]:
header.append(cell.value)
# 获取接收人工号和推送内容对应的列号
receiver_col, push_content_col = None, None
for index, column in enumerate(header):
if column == '接收人工号':
receiver_col = index + 1
elif column == '推送内容':
push_content_col = index + 1
# 遍历数据
dictext = {}
strtext = ''
for row in worksheet.iter_rows(min_row=2):
receiver = row[receiver_col-1].value
push_content = row[push_content_col-1].value
if receiver not in dictext:
dictext[receiver] = ''
cell_text = str(push_content)
if cell_text != 'None':
strtext += cell_text.strip() + '\n'
else:
strtext += '\n'
dictext[receiver] = strtext.strip()
if cell_text == 'None':
strtext = ''
```
上面的代码实现了对 Excel 文件的操作,并实现了对数据的提取和拼接,最终得到了字典 `dictext`,其中以每行的“接收人工号”作为 key,以拼接后的字符串作为 value。
阅读全文