You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为CSV文件创建多个工作表 附单工作表生成实现代码

问题解答

首先明确:CSV 是纯文本逗号分隔值格式,本身*不支持多工作表(sheet)*特性,多工作表是 XLS/XLSX 这类 Office 表格格式独有的功能。


方案1:改用XLSX格式实现真多工作表(推荐)

如果你需要生成带多个工作表的文件供Excel打开,直接改用XLSX格式输出即可,Dart生态下可以用excel包实现,示例代码如下:

// 先在pubspec.yaml添加依赖:excel: ^2.1.0(请使用官方最新版本)
import 'package:excel/excel.dart';

void main() {
  // 初始化Excel对象
  var excel = Excel.createExcel();

  // 第一个工作表:可直接使用默认生成的Sheet1,也可以重命名
  Sheet sheet1 = excel['税费表'];
  // 写入你原有的税费数据
  List<dynamic> associateList = [
    {"taxes": "100"},
  ];
  // 写入表头
  sheet1.appendRow(["Taxes"]);
  // 写入数据行
  for (var item in associateList) {
    sheet1.appendRow([item["taxes"]]);
  }

  // 新增第二个自定义工作表
  Sheet sheet2 = excel['其他数据表'];
  // 写入第二个工作表的内容,示例如下
  sheet2.appendRow(["商品名称", "售价"]);
  sheet2.appendRow(["示例商品A", "299"]);

  // 导出为XLSX文件字节流,后续写入后缀为.xlsx的文件即可
  var fileBytes = excel.save();
}

方案2:纯CSV格式模拟多表(仅视觉区分,不是真工作表)

如果你必须输出CSV格式,可以在两个表的数据之间插入多个空行+自定义表名标识,实现视觉上的内容区分,这种方式打开后两个表的数据仍在同一个工作表里,只是分段显示:

List<List<dynamic>> rows = [];
// 写入第一个表内容
List<dynamic> associateList = [
  {"taxes": "100"},
];
rows.add(["=== 表1:税费表 ==="]);
rows.add(["Taxes"]);
for (int i = 0; i < associateList.length; i++) {
  rows.add([associateList[i]["taxes"]]);
}
// 插入3个空行分隔两个表
rows.addAll([[], [], []]);
// 写入第二个表内容
rows.add(["=== 表2:其他数据 ==="]);
rows.add(["字段1", "字段2"]);
rows.add(["测试值1", "测试值2"]);

// 转换为CSV格式
String csv = const ListToCsvConverter().convert(rows);

内容的提问来源于stack exchange,提问作者Dani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:15:01