【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平台上运行Tomcat
从之前的学习中知道,可以调用Bootstrap类将Toomcat作为一个独立的应用程序来运行,在Windows平台上,可以调用startup.bat批处理文件来启动Tomcat,或运行shutdown ...
- Java-this关键词
this关键词 1,this调用本类属性 在程序里面是有this可以实现以下三类的结构的描述: ·当前类中的属性:this.属性: ·当前类中的方法(普通方法.构造方法):this().this.方法 ...
- js修改当前页面地址栏参数
利用HTML5 history新特性replaceState方法可以修改当前页面地址栏参数,示例代码: //选择日期后改变地址栏 var urlSearch = location.href; var ...
- warning C4819 的解决方法
编译VC++程序的时候出现如下提示警告: warning C4819: The file contains a character that cannot be represented in the ...
- mysq练习
表名和字段 –1.学生表Student(s_id,s_name,s_birth,s_sex) --学生编号,学生姓名, 出生年月,学生性别–2.课程表Course(c_id,c_name,t_id) ...
- 在django中部署vue项目,不单独抽离dist文件
1,在django项目下(app所在目录),新建vue项目,使用脚手架构建vue项目,vue create (项目名) 2,构建好以后,配置django: (1),配置settings: · 修改te ...
- qq快捷打开聊天窗口的代码
pc代码: http://wpa.qq.com/msgrd?v=3&uin=8423291&site=qq&menu=yes
- 4.图片左轮播图(swiper)
一.html部分 二.js部分 三.源代码部分 <body> <div id="box"> <img src="imges/111.jpg& ...
- PHP删除字符串中的空格和换行符 将字符串中的连续多个空格转换为一个空格
//删除空格和回车 function trimall($str){ $qian=array(" "," ","\t","\n&qu ...
- linux 启动tomcat
操作步骤: 第一步:进入tomcat的bin目录 cd /usr/local/tomcat/bin 第二步:使用tomcat关闭命令 ./shutdown.sh 第三步:查看tomcat是否关闭 ps ...