【C#-导出Excel】DataSet导出Excel
1、添加引用
2、封装方法
- using System;
- using System.Data;
- using System.IO;
- using NPOI.HSSF.UserModel;
- using NPOI.SS.UserModel;
- namespace Demo
- {
- /// <summary>
- /// Excel操作类
- /// </summary>
- public class Excel
- {
- private readonly HSSFWorkbook workbook = null;
- private readonly DataSet dataSet = null;
- private readonly string excelFilename = string.Empty;
- private readonly ICellStyle cellDateTimeStyle = null;
- /// <summary>
- /// Excel操作类构造函数
- /// </summary>
- /// <param name="dataSet"></param>
- /// <param name="excelFilename"></param>
- public Excel(DataSet dataSet, string excelFilename)
- {
- this.dataSet = dataSet;
- this.excelFilename = excelFilename;
- workbook = new HSSFWorkbook();
- IDataFormat iDataFormat = workbook.CreateDataFormat();
- //设置一个DateTime单元格的样式
- cellDateTimeStyle = workbook.CreateCellStyle();
- cellDateTimeStyle.DataFormat = iDataFormat.GetFormat("yyyy-m-d h:mm:ss");
- }
- /// <summary>
- /// 生成excel
- /// </summary>
- /// <returns></returns>
- public bool Write()
- {
- bool returns = false;
- using (FileStream saveFile = new FileStream(excelFilename, FileMode.Create, FileAccess.ReadWrite))
- {
- WriteExcelFile(dataSet);
- workbook.Write(saveFile);
- returns = true;
- }
- return returns;
- }
- private void WriteExcelFile(DataSet ds)
- {
- foreach (DataTable dt in ds.Tables)
- {
- ISheet sheet = workbook.CreateSheet(dt.TableName);
- WriteDataTableToExcelWorksheet(dt, sheet);
- }
- }
- private void WriteDataTableToExcelWorksheet(DataTable dt, ISheet sheet)
- {
- //生成sheet第一行列名
- IRow row = sheet.CreateRow();
- for (int i = ; i < dt.Columns.Count; i++)
- {
- ICell cell = row.CreateCell(i);
- cell.SetCellValue(dt.Columns[i].Caption);
- }
- //写入数据
- for (int i = ; i < dt.Rows.Count; i++)
- {
- IRow rows = sheet.CreateRow(i + );
- for (int j = ; j < dt.Columns.Count; j++)
- {
- ICell cell = rows.CreateCell(j);
- var cellValue = dt.Rows[i][j];
- if (cellValue == DBNull.Value)
- {
- continue;
- }
- //类型判断处理
- var type = cellValue.GetType();
- var typeName = type.Name.ToLower();
- switch (typeName)
- {
- case "int32":
- cell.SetCellValue(double.Parse(cellValue.ToString()));
- break;
- case "string":
- cell.SetCellValue(cellValue.ToString());
- break;
- case "datetime":
- cell.CellStyle = cellDateTimeStyle;
- cell.SetCellValue(DateTime.Parse(cellValue.ToString()));
- break;
- case "guid":
- cell.SetCellValue(cellValue.ToString());
- break;
- case "boolean":
- cell.SetCellValue(bool.Parse(cellValue.ToString()));
- break;
- default:
- throw new Exception(string.Format("类型:{0}未做处理,请自行添加", typeName));
- }
- }
- }
- }
- }
- }
3、实际应用
- using System;
- using System.Data;
- namespace Demo
- {
- class Program
- {
- static void Main(string[] args)
- {
- DataSet dataSet = new DataSet();
- DataTable dataTable = new DataTable();
- dataTable.TableName = "Demo";
- dataTable.Columns.Add("Id", typeof(int));
- dataTable.Columns.Add("名称", typeof(string));
- dataTable.Columns.Add("年龄", typeof(int));
- dataTable.Columns.Add("添加日期", typeof(DateTime));
- for (int i = ; i < ; i++)
- {
- dataTable.Rows.Add(i, "名称demo" + i, , DateTime.Now);
- }
- dataSet.Tables.Add(dataTable);
- Excel excel = new Excel(dataSet, "Demo.xls");
- excel.Write();
- }
- }
- }
【C#-导出Excel】DataSet导出Excel的更多相关文章
- NPOI DataSet导出excel
/// <summary> /// DataSet导出到Excel的MemoryStream /// </summary> /// <param name="d ...
- C# DataSet导出Excel
//多个DataSet导出Excel文件 public static void DataSetToExcel(DataSet p_ds,string strSavePath) { ;//多个DataS ...
- 【C#常用方法】2.DataTable(或DataSet)与Excel文件之间的导出与导入(使用NPOI)
DataTable与Excel之间的互导 1.项目添加NPOI的引用 NPOI项目简介: NPOI是一个开源的C#读写Excel.WORD等微软OLE2组件文档的项目,特点是可以在没有安装Office ...
- DataSet导出到Excel,并生成文件(C#实现,可合并行和列)
using System; using System.IO; using System.Data; using System.Reflection; using System.Diagnostics; ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- C# 之 EXCEL导入导出
以下方式是本人总结的一些经验,肯定有很多种方法,在此先记下,留待以后补充... 希望朋友们一起来探讨相关想法,请在下方留言. A-1:EXCEL模板导出 非常简单,将EXCEL模板上传到项目中后,将其 ...
- Excel 导入 导出 Microsoft
导出: private void exportExcel() { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { Application. ...
- C#实现Excel模板导出和从Excel导入数据
午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.Office.Interop.Excel 3.封装的Exc ...
- 如何使用NPOI 导出到excel和导入excel到数据库
近期一直在做如何将数据库的数据导出到excel和导入excel到数据库. 首先进入官网进行下载NPOI插件(http://npoi.codeplex.com/). 我用的NPOI1.2.5稳定版. 使 ...
随机推荐
- Plsql配置后,sql语句可以简写 快速使用
in=INSERT up=UPDATE se=SELECT fr=FROM wh=WHERE or=ORDER BY de=DELETE df=DELETE FROM sf=SELECT * FROM ...
- URI解析
这里主要参考 RFC3986 文档. URI可以分为URL,URN或同时具备locators 和names特性的一个东西.URN作用就好像一个人的名字,URL就像一个人的地址.换句话说:URN确定了东 ...
- Ruby Rails学习中:Sass 和 Asset Pipeline,布局中的链接(Rails路由,具名路由),用户注册: 第一步
接上篇: 一.Sass 和 Asset Pipeline Rails 中最有用的功能之一是 Asset Pipeline, 它极大地简化了静态资源文件(CSS.JavaScript 和图像)的生成和管 ...
- mysql-tpcc测试
os: centos 7.4 db: mysql 5.7 software: tpcc-mysql TPC-C是专门针对联机交易处理系统(OLTP系统)的规范. tpcc-mysql是percona基 ...
- C3.js入门案例
C3.js是基于D3.js开发的JavaScript库,它可以让开发者构建出可复用的图表,并且还提供了一系列图表上的交互行为.通过C3,只需要往generate函数中传入数据对象就可以轻松的绘制出图表 ...
- RAII惯用法:C++资源管理的利器(转)
RAII惯用法:C++资源管理的利器 RAII是指C++语言中的一个惯用法(idiom),它是“Resource Acquisition Is Initialization”的首字母缩写.中文可将其翻 ...
- ES6新增内容总结
ES6新增内容有:1,模块化思想.2,关于变量let和const.3,解构赋值.4,字符串的扩展.5,函数的扩展.6,箭头函数.7,继承apply的用法 以下就是详解: 1:模块化思想 非模块化有命名 ...
- Shell脚本——for,while,until循环
1.for循环: 语句格式: for i in 循环判断 do 循环体 done 举例:九九乘法表(for循环版本) #!/bin/bash # Author: Sean Martin # Blog: ...
- Delphi TIdUDPServer组件
- Linux学习--第九天--du、df、fsck、dumpe2fs、mount、NTFS-3G、fdisk、partprobe、/etc/fstab、free、mkswap、swapon
分区类型 主分区:最多只能分四个 扩展分区:只能有一个,如果有了扩展分区,主分区只能有三个.扩展分区不能格式化和存储数据,再划分为逻辑分区才能进行相应操作. 逻辑分区:IDE硬盘,linux最多支持5 ...