C# DataTable 生成Excel 和 CSV文件

2023-12-19

EXCEL

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.IO;

public class ExcelService
{
    public string GenerateExcelFileAndReturnPath(DataTable dataTable)
    {
        IWorkbook workbook = new XSSFWorkbook();
        ISheet sheet = workbook.CreateSheet("Sheet1");

        // 写入列名
        IRow headerRow = sheet.CreateRow(0);
        foreach (DataColumn column in dataTable.Columns)
        {
            headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
        }

        // 写入数据
        int rowIndex = 1;
        foreach (DataRow row in dataTable.Rows)
        {
            IRow dataRow = sheet.CreateRow(rowIndex);
            foreach (DataColumn column in dataTable.Columns)
            {
                dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
            }
            rowIndex++;
        }

        // 保存到服务器指定路径
        string filePath = "path/to/save/file.xlsx";
        using (FileStream fileStream = new FileStream(filePath, FileMode.Create))
        {
            workbook.Write(fileStream);
        }

        return filePath; // 返回文件路径
    }
}

生成CSV文件

using System.Data;
using System.IO;
using System.Text;

public class CsvService
{
    public string GenerateCsvFileAndReturnPath(DataTable dataTable)
    {
        StringBuilder sb = new StringBuilder();

        // 写入列名
        foreach (DataColumn column in dataTable.Columns)
        {
            sb.Append(column.ColumnName + ",");
        }
        sb.AppendLine();

        // 写入数据
        foreach (DataRow row in dataTable.Rows)
        {
            foreach (DataColumn column in dataTable.Columns)
            {
                sb.Append(row[column].ToString() + ",");
            }
            sb.AppendLine();
        }

        // 保存到服务器指定路径
        string filePath = "path/to/save/file.csv";
        File.WriteAllText(filePath, sb.ToString());

        return filePath; // 返回文件路径
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# DataTable 生成Excel 和 CSV文件 的相关文章

  • 有什么方法可以重载 C# 中的扩展方法吗?

    我有以下模型模式 public abstract class PARENTCLASS public class CHILD A CLASS PARENTCLASS public static class EXTENSION public s
  • 单元测试、集成测试还是设计中的问题?

    我编写了我的第一个单元测试 我认为它过于依赖其他模块 我不确定是否是因为 这是一个复杂的测试 我实际上已经编写了集成测试或 我的设计有问题 我首先要说的是 虽然我有大约 4 年的开发经验 但我从未学过 也没有人教过自动化测试 我刚刚使用 H
  • 使用 C# 中的 Google 地图 API 和 SSIS 包获取行驶距离

    更新 找到了谷歌距离矩阵并尝试相应地修改我的代码 我在这里收到无效参数错误 return new GeoLocation dstnc uri ToString catch return new GeoLocation 0 0 https 基
  • 如何加载图像文件到ImageView?

    我试图在从文件选择器中选择图像文件后立即显示该图像文件 文件选择器仅限于 png 和 jpg 文件 所选文件存储在文件类型的变量中 为此 我设置了一个 ImageView 我希望用这个新文件设置图像 唯一的问题是它的类型是文件而不是图像 如
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • java中的第三个布尔状态是什么?

    虽然我知道根据定义 布尔值仅包含两种状态 真或假 我想知道布尔值在用这些状态之一初始化之前有什么值 它默认为 false http java sun com docs books tutorial java nutsandbolts dat
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • 如何在启用嵌入时间戳和 LTV 的情况下签署 PDF?

    我正在尝试签署启用了时间戳和 LTV 的 pdf 以便它在 Adob e Reader 中显示如下 在英语中 这意味着 签名包含嵌入的时间戳 和 签名启用了 LTV 这是我正在使用的代码 PrivateKey pk get pk from
  • C++ 到 C# 事件处理

    所以我有我的C WinForm 应用程序 我从中调用我的C CLI MFC dll图书馆 但也有一些events在我的 C 库上 甚至此事件也发生在该库的本机 非 CLI 部分 我需要从我的 C 应用程序调用一些代码 并获取一些有关此事件的
  • doxygen c++:记录由“using”声明公开的私有继承成员

    作为一个例子 我有以下课程 class A public void methodOne class B private A public Brief description using A methodOne 我还没有找到强制 doxyge
  • ALTER TABLE ... ADD CONSTRAINT 失败时将事务回滚到保存点

    有没有办法在事务中添加检查约束and如果失败回滚到以前的保存点 而不是回滚整个事务 就我而言 当 ALTER TABLE ADD CONSTRAINT 命令失败时 事务无法回滚到保存点 尝试这样做会引发 InvalidOperationEx
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • C 语言中的 Alpha 混合 2 RGBA 颜色[重复]

    这个问题在这里已经有答案了 可能的重复 如何快速进行阿尔法混合 https stackoverflow com questions 1102692 how to do alpha blend fast 对 2 个 RGBA 整数 颜色进行
  • 将 Swagger 与命名空间版本的 WebApi 结合使用

    我已经找到了如何使用基于名称空间的 WebAPI 版本这个班 https aspnet codeplex com SourceControl changeset view dd207952fa86 Samples WebApi Namesp
  • AES 密钥是随机的吗?

    AES 密钥可以通过此代码生成 KeyGenerator kgen KeyGenerator getInstance AES kgen init 128 but 如果我有一个 非常可靠 的生成随机数的方法 我可以这样使用它吗 SecureR
  • while循环只执行一次

    我很难弄清楚为什么 while 循环实际上不会循环 它运行一次并停止 import java util public class mileskm public static void main String args Scanner inp
  • Excel 公式从单元格中获取字符串值并按字母顺序对其字符进行排序

    你能帮我制作一个 Excel 公式 从单元格中获取字符串值并按字母顺序对其字符进行排序吗 Ex 原始单元格值 BACR 已排序的字符单元格 ABCR 编辑 2022 年 4 月 29 日 随着 Office 365 Excel 中引入的动态
  • 如何让JComboBox中的内容居中显示?

    目前我有这个JComboBox 我怎样才能将其中的内容居中 String strs new String 15158133110 15158133124 15158133458 JComboBox com new JComboBox str
  • 嵌入式二进制资源 - 如何枚举嵌入的图像文件?

    我按照中的说明进行操作这本书 http www apress com book view 9781430225492 关于资源等的章节 我不太明白的是 如何替换它 images Add new BitmapImage new Uri Ima

随机推荐

  • 免费有意思的好用API推荐

    周公解梦 周公解梦大全 周公解梦查询 免费周公解梦 星座查询 根据日期或星座名称 查询星座详细信息 包含 掌管宫位 主管星 颜色 珠宝 幸运数字 性格等等 生肖查询 根据生肖名称 查询生肖详细信息 包含 五行分析 本命佛 生辰 吉祥颜色 幸
  • Vue的组件化

    组件化步骤 1 创建Vue组件 const school Vue extend template div h2 学校名称 schoolName h2 h2 学校地址 schoolAddress h2 div data return scho
  • torch.rand()和torch.randn()的区别

    torch rand 和 torch randn 是 PyTorch 中用于生成张量的两个函数 它们之间的主要区别在于生成张量元素的方式不同 1 torch rand torch rand 用于生成元素值在 0 1 之间均匀分布的随机张量
  • uniapp初级入门-flex布局学习11-骰子多点演示

    代码
  • python pdf转图片

    import fitz def pdf2img pdf path img dir doc fitz open pdf path 打开pdf for page in doc 遍历pdf的每一页 zoom x 2 0 设置每页的水平缩放因子 z
  • Android的组件、布局学习

    介绍 公司组织架构调整 项目组需要承接其他项目组的android项目 负责维护和开发新需求 故学习下基础语法和项目开发 组件学习 Toolbar header布局部分 就是app最顶部的部分 他的显示与否 是与F androidProjec
  • 使用AI大模型增强图像清晰度

    在线体验 点击 图像处理 即可使用 public static final String IMAGE DEFINITION ENHANCE https aip baidubce com rest 2 0 image process v1 i
  • C++基础-一维和二维数组详解

    目录 定义 一维数组 二维数组 定义 数组是相同类型的对象序列 它们占据一块连续的内存区 一维数组
  • 《计算机是怎样跑起来的》读书笔记

    目录 1 计算机组成 1 CPU Central Processing Unit 中央处理器 2 硬盘 Hard Disk Drive 3 内存 Memory 4 输入与输出设备 I 0设备
  • 讲解selenium 获取href find_element_by_xpath

    目录 讲解selenium获取href find element by xpath 什么是XPath 使用find element by xpath获取href Selenium的特点和优势 Selenium的应用场景 Selenium的核
  • HWSD中国土壤数据库

    数据名称 HWSD中国土壤数据库 数据时间 2009年 数据格式 Shp和Tiff 数据坐标系 WGS1984和krasovsky 1940 Albers 数据介绍 数据来源于联合国粮农组织 FAO 和维也纳国际应用系统研究所 IIASA
  • 如何在出厂重置后从 Android 恢复丢失的数据、照片、联系人

    什么是恢复出厂设置 恢复出厂设置是将电子设备恢复到制造商在工厂设置的原始状态 也称为主重置或硬重置 恢复出厂设置有什么作用 这样做将删除用户在设备上添加的所有数据 设置和应用程序 当手机需要出售 需要擦除个人数据或者遇到设备故障 病毒攻击
  • 黑豹程序员-自定义表单实现门户自定制

    功能 用户可以实现欢迎页面自己定制 数据由数据库表进行维护 原理 页面利用div进行布局 拖动div记录其坐标 并写库 页面加载时从数据库表中读取div坐标和数据即可 效果图
  • 第三方软件验收测评在项目验收中的重要性

    CMA CNAS第三方检测报告 软件从最简单的家用电冰箱到工业生产 涉及方方面面 以前软件中的问题只是个人重启一下机器的小事情 但如今软件已在大型工业中发挥越来越大的作用 软件安全与质量的隐患已可能对人身安全和环境造成威胁 软件工程 的总目
  • 【Redis】Redis 配置文件

    1 概述 相同文件 Redis redis 配置 配置文件 redis conf 自定义目录 myredis redis conf 4 1 Units单位 配置大小单位 开头定义了一些基本的度量单位 只支持bytes 不支持bit 大小写不
  • 基于微信小程序的宠物商城系统设计与实现

    博主介绍 全网粉丝10W CSDN全栈领域优质创作者 博客之星 掘金 华为云 阿里云等平台优质作者 精彩专栏 推荐订阅 计算机毕设精品项目案例 持续更新 文末获取源码 数据库 文档 感兴趣的可以先收藏起来 还有大家在毕设选题 项目以及论文编
  • 【zoedepth】代码阅读与踩坑

    训练 真正训练代码 zoedepth trainers base trainer py 181 每个batch zoedepth trainers zoedepth trainer Trainer train on batch losses
  • AI制文技术:打开创作新天地

    第一印象 人工智能妙不可言 首次尝试使用AI创作文章 我深深感受到其高效与精准 您仅需提供一个富有吸引力的话题 AI便能轻松构思出一个引人入胜的标题 进一步地 电脑能依据您的主题自动生成详细且具有逻辑性的文本内容 无论是在文字数量还是结构框
  • 如何在 Windows 电脑的SSD硬盘恢复数据

    当人们想要更换硬盘时 他们通常会从 HDD 硬盘驱动器 切换到 SSD 固态硬盘 这是因为 SSD 被认为比 HDD 更好并且速度更快 但这并不意味着您不会丢失 SSD 设备中的文件 当 SSD 丢失文件时 恢复过程与 HDD 相同 但是
  • C# DataTable 生成Excel 和 CSV文件

    EXCEL using NPOI SS UserModel using NPOI XSSF UserModel using System Data using System IO public class ExcelService publ