当前位置: 首页 > 知识库问答 >
问题:

java - 如何把数据分割到不同的 Excel 文件中?

邵捷
2023-10-18

如下图所示,希望能在打印的时候,使头两行为重复行,数据部分,按公司名分开,显示不同公司的数据。
image.png

共有4个答案

齐学文
2023-10-18
import csvdef split_csv_by_company(csv_file):    with open(csv_file, newline='', encoding='utf-8') as file:        reader = csv.reader(file)        table_name = next(reader) # 读取第一行作为表格名称        headers = next(reader)  # 读取第二行作为标题行        current_company = None        company_data = {}        for row in reader:            company_name = row[0]            if company_name not in company_data:                company_data[company_name] = []            company_data[company_name].append(row)                    for company_name, data in company_data.items():            save_data_to_file(company_name, table_name, headers, data)def save_data_to_file(company_name, table_name, headers, data):    filename = f"{table_name[0]}_{company_name}.csv"    with open(filename, 'w', newline='', encoding='utf-8') as file:        writer = csv.writer(file)        writer.writerow(table_name)        writer.writerow(headers)        writer.writerows(data)# 调用示例split_csv_by_company('data.csv')

如果你会python,那非常简单,如果不会,那也不用看我这个了!

韩楷
2023-10-18

把数据处理成Map<CompanyName,List<CompanyData>> data结构,把生成excel的代码封装成一个函数,循环这个Map, 传入CompanyName 和 List<CompanyData> 就可以啦

奚光霁
2023-10-18

这个需要借助 Excel 本身的分页符和重复行功能。
配置分页符:https://www.grapecity.com.cn/developer/grapecitydocuments/exc...

配置顶部重复行:https://www.grapecity.com.cn/developer/grapecitydocuments/exc...

代码如下:

public void SplitData() {    Workbook wb = new Workbook();    IWorksheet sheet = wb.getWorksheets().get(0);    Object data = new Object[][]{            {"A", "A1", "A2"},            {"A", "A1", "A2"},            {"A", "A1", "A2"},            {"A", "A1", "A2"},            {"B", "B1", "B2"},            {"B", "B1", "B2"},            {"B", "B1", "B2"},            {"B", "B1", "B2"},            {"B", "B1", "B2"},            {"C", "C1", "C2"},            {"C", "C1", "C2"},            {"C", "C1", "C2"},            {"C", "C1", "C2"},    };    sheet.getRange("A1:C1").merge();    sheet.getRange("A1:C1").setValue("公司信息");    sheet.getRange("A2").setValue("公司名");    sheet.getRange("B2").setValue("数据1");    sheet.getRange("C2").setValue("数据2");    sheet.getRange("A3:C15").setValue(data);    sheet.getHPageBreaks().add(sheet.getRange("A7"));    sheet.getHPageBreaks().add(sheet.getRange("A12"));    sheet.getPageSetup().setPrintTitleRows("$1:$2");    wb.save("output/SplitData.pdf");}

结果:
image.png

竺辉
2023-10-18

您可以使用 Python 中的 pandas 和 openpyxl 库来解决这个问题。Pandas 是一个强大的数据处理库,而 openpyxl 可以用来处理 Excel 文件。以下是一个简单的示例,说明如何将数据按照您的需求分割到不同的 Excel 文件中。

首先,您需要安装 pandas 和 openpyxl。在您的命令行中运行以下命令:

pip install pandas openpyxl

然后,您可以使用以下代码来实现您的需求:

import pandas as pd# 您的原始数据,这里假设为 csv 格式data = pd.read_csv('your_data.csv')# 按照公司名分组数据grouped_data = data.groupby('Company')# 创建一个新的 ExcelWriter 对象,这将允许我们将多个 pandas dataframe 写入多个工作表中with pd.ExcelWriter('output.xlsx') as writer:    for name, group in grouped_data:        # 将每个组的数据写入一个新的工作表        group.to_excel(writer, sheet_name=name, index=False)

这个脚本将创建一个名为 "output.xlsx" 的 Excel 文件,其中每个工作表都包含一个公司的数据。它首先将所有的数据读入一个 pandas DataFrame,然后按照 "Company" 列进行分组。最后,它将每个组的数据写入一个新的工作表。注意,我们通过将 index=False 传递给 to_excel 方法,去掉了 DataFrame 的索引列。

这个代码片段假定您的数据已经在 CSV 文件中并且已经包含了重复的行。如果您的数据不是这样的,那么您可能需要对代码进行一些调整以满足您的需求。

 类似资料:
  • 如何用Java将一个Excel的文件的数据读取到另一个Excel中? 我有两个excel文件,希望将A文件中的数据合并在B文件中。有没有推荐的方案

  • 问题内容: 我已经搜索了stackoverflow,但是没有找到明确的答案。如何将数据从XLS文件的特定行和列读取到我的Android应用程序?如何读取XLS文件?我不想将其转换为CSV,因为在尝试将其转换时出现错误。 也许我可以使用此http://www.andykhan.com/jexcelapi/tutorial.html#reading,但我什至不知道如何将其导入到我的项目中。请帮忙。 问

  • 能不能用 Java 实现把 Excel 文件转化为 PDF 我有一个excel文件,希望在后台用java转成一个pdf文件,要求信息不能丢失。

  • 该编码能够读取excel文件中的小数据...但不读取excel文件中的大数据文件....如何进一步修改代码?

  • 本文向大家介绍Java实现把excel xls中数据转为可直接插入数据库的sql文件,包括了Java实现把excel xls中数据转为可直接插入数据库的sql文件的使用技巧和注意事项,需要的朋友参考一下 我的一贯风格,代码说明一切。。 废话不多说了,直接给大家贴代码了,具体代码如下所示: 有关Java实现把excel xls中数据转为可直接插入数据库的sql文件的知识,小编就给大家介绍这么多,希望

  • 本文向大家介绍在Vue里如何把网页的数据导出到Excel的方法,包括了在Vue里如何把网页的数据导出到Excel的方法的使用技巧和注意事项,需要的朋友参考一下 前言: 在做后台管理的时候,我们往往有需要把网页上面的数据导出到excel这样的需求,真实的企业项目里对应一些导出财务报表、员工信息、交易记录、考勤打卡记录…等等需求,本文将对此做探讨。 开始前补充: 网上是有些牛人已经把这个功能封装成组件