【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稳定版. 使 ...
随机推荐
- windows环境jar包部署到linux服务器,一键操作(帮助说明)
背景:在上次https://www.cnblogs.com/shexunyu/p/11165282.html发布了第一个版本后,后面增加了相关功能 需求:做下简单的说明文档 下载:https://fi ...
- 初学SpringBoot遇到的坑和笔记
目录 1.日期返回给前端显示不理想问题 1.1重现 1.2原因 1.3解决 1.4结果 2.MyBatis-Plus数据库字段未找到问题 2.1重现 2.2原因 2.3解决 3.Long型雪花主键返回 ...
- 初遇PHP(一)
因为想给自己弄一个微信公众号,顺便提升一下自己,所以有了以下内容,本次学习的最终目标是能用php制作套微信公众号,然后转成Java.为什么要这么麻烦呢,其一是买的资料书是php的,其二是顺水推舟刚好可 ...
- winform串口控件serialPort1的使用
serialPort1 控件使用的关键点主要有三: 1.配置串口号2.配置数据接收事件3.打开串口 关键代码如下: private void Form1_Load(object sender, Eve ...
- 3-Perl 基础语法
Perl 基础语法Perl借用了C.sed.awk.shell脚本以及很多其他编程语言的特性,语法与这些语言有些类似,也有自己的特点.Perl 程序有声明与语句组成,程序自上而下执行,包含了循环,条件 ...
- EasyUI_DataGrid数据操作
1.html: <div style="width: 1100px;height: 350px ;overflow: scroll"> <table id=&qu ...
- 解决tomcat端口冲突
1.根据8080端口号查找占用8080端口的进程 netstat -ano|findstr " 进程id:6352 2.根据进程ID查找进程名字 tasklist|findstr " ...
- 简单了解webservice
webservice是什么 WebService是一种跨编程语言.跨操作系统平台的远程调用技术. 远程调用技术:远程调用是指一台设备上的程序A可以调用另一台设备上的方法B. 跨编程语言:是指服务端.客 ...
- asp.net Core 2.0 MVC为Controller或Action添加定制特性实现登录验证
前言:最近在倒腾 微软的新平台 asp.net Core 2.0,在这个过程中有些东西还是存在差异.下面是我在学习过程的一点笔记.有不妥之处,望各位大虾指正! 一.先创建一个控制器继承于Control ...
- Java ArrayList常用接口介绍及示例
Java List 常用类型 类型 特征 ArrayList 随机访问元素快:中间插入与删除元素较慢:操作不是线程安全的 LinkedList 中间插入与删除操作代价较低,提供优化的顺序访问:随机访问 ...