一:例子截图:

二:NPOI截图

三:EmployeeListWindow.cs代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HRMSys.DAL;
using HRMSys.Model;
using System.Data.SqlClient;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.IO; namespace HYMSys.UI.EmployeeMgr
{
public partial class EmployeeListWindow : Form
{
public EmployeeListWindow()
{
InitializeComponent();
}
/// <summary>
/// 加载所有信息
/// </summary>
public EmployeeList[] load()
{
EmployeeDAL de = new EmployeeDAL(); return de.ListAll(); } /// <summary>
/// 添加员工
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolsb_add_Click(object sender, EventArgs e)
{
EmployeeEditWindow edit = new EmployeeEditWindow();
edit.IsAdd = true;
edit.ShowDialog(); if (edit.IsLoad == true)
{
dataGridView1.DataSource = load();
} }
/// <summary>
/// 删除员工
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolsb_delete_Click(object sender, EventArgs e)
{
Guid id=(Guid)dataGridView1.CurrentRow.Cells[].Value;
string name=(string)dataGridView1.CurrentRow.Cells[].Value;//这里的cell是相对于list员工操作窗口上name这列,即使第二行
if (MessageBox.Show("真的要删除---"+name+"---吗?","警告!",MessageBoxButtons.OKCancel)==DialogResult.OK)
{
EmployeeDAL dal = new EmployeeDAL();
dal.DeleteById(id);
dataGridView1.DataSource = load();
} }
/// <summary>
/// 修改员工信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolsb_edit_Click(object sender, EventArgs e)
{
EmployeeEditWindow edit = new EmployeeEditWindow();
edit.EditId = (Guid)dataGridView1.CurrentRow.Cells[].Value;
edit.IsAdd = false;
edit.ShowDialog();
if (edit.IsLoad == true)
{
dataGridView1.DataSource = load();
} }
/// <summary>
/// 自动加载所有员工信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void EmployeeListWindow_Load(object sender, EventArgs e)
{
DepartmentDAL dal = new DepartmentDAL();
cb_depart.DataSource = dal.ListAll();
cb_depart.DisplayMember = "Name";
cb_depart.ValueMember = "Id";
//cb_depart.SelectedValue= dtp_indate.Value = DateTime.Today.AddMonths(-);
dtp_enddate.Value = DateTime.Today; dataGridView1.DataSource= load(); }
/// <summary>
/// 综合查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
List<string> wherelist = new List<string>();
List<SqlParameter> parameter = new List<SqlParameter>();
if (ckb_name.Checked == true)
{
wherelist.Add("Name=@Name");
parameter.Add(new SqlParameter("@Name",tb_name.Text)); }
if (ckb_indate.Checked == true)
{
wherelist.Add("InDate>=@InDateStart and InDate<=@InDateEnd");
parameter.Add(new SqlParameter("@InDateStart",dtp_indate.Value));
parameter.Add(new SqlParameter("@InDateEnd",dtp_enddate.Value));
}
if (ckb_depart.Checked == true)
{
wherelist.Add("DepartmentId=@DepartmentId");
parameter.Add(new SqlParameter("@DepartmentId",cb_depart.SelectedValue));
} string whereSql=string.Join(" and ",wherelist);
string Sql="select * from T_Employee";
if (whereSql.Length > )
{
Sql = Sql + " where " + whereSql;
}
EmployeeDAL dal = new EmployeeDAL();
dataGridView1.DataSource= dal.SearchBySome(Sql, parameter); }
/// <summary>
/// 导出到Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsb_outputExcel_Click(object sender, EventArgs e)
{
SaveFileDialog saFi = new SaveFileDialog();//打开保存对话框
saFi.Filter = "Excel文件|*.xls";//设置文件类型
if (saFi.ShowDialog() != DialogResult.OK)//如果未打开对话框,返回
{
return;
}
string path = saFi.FileName;//得到文件的路径
HSSFWorkbook workbook = new HSSFWorkbook();//创建一个Excel文档
ISheet sheet = workbook.CreateSheet("员工操作");//创建一个Excel的页 IRow rowheader = sheet.CreateRow();//创建一个行,作为行头号
rowheader.CreateCell(, CellType.STRING).SetCellValue("姓名");//第一行第一列显示姓名
rowheader.CreateCell(, CellType.STRING).SetCellValue("工号");
rowheader.CreateCell(, CellType.STRING).SetCellValue("入职日期"); EmployeeList[] list = (EmployeeList[])dataGridView1.DataSource;//得到datagridview的数据源,Excel的写入文件
for (int i = ; i < list.Length; i++)//将写入的数据与Excel的单元格对应
{
EmployeeList li = list[i];//得到数据组的单条信息
IRow row = sheet.CreateRow(i + );//创建一行
row.CreateCell(, CellType.STRING).SetCellValue(li.Name);//将这行的第一列填上姓名
row.CreateCell(, CellType.STRING).SetCellValue(li.Number); //存入date这种格式的转换
ICellStyle datestyle = workbook.CreateCellStyle();//创建一个单元格样式
IDataFormat dateformamt = workbook.CreateDataFormat();//创建一个数据的固定格式 datestyle.DataFormat = dateformamt.GetFormat("yyyy\"年\"m\"月\"d\"日\"");//日期的样式采用这种数据格式
//存日期的单元格指定他的格式
ICell indate = row.CreateCell(, CellType.NUMERIC);
indate.CellStyle = datestyle; indate.SetCellValue(li.InDate);//给存日期的单元指定数据 }
//Excel写入数据流
using(Stream stream=File.OpenWrite(path))//创建一个写入流
{
workbook.Write(stream);//Excel写入数据流
} }
}
}

四:通过microsoft.visual basic.dll来导出

a.添加引用

b.调出excel,由于这个方法每次运行都会开一个进程,太占资源,没上面方法好用,这里不再做过多的介绍

c.

导出Excel文件,npoi方式和通过microsoft.visual basic.dll的更多相关文章

  1. 基于Vue + axios + WebApi + NPOI导出Excel文件

    一.前言 项目中前端采用的Element UI 框架, 远程数据请求,使用的是axios,后端接口框架采用的asp.net webapi,数据导出成Excel采用NPOI组件.其业务场景,主要是列表页 ...

  2. PHP导出excel文件的几种方式

    PHP导出excel文件的几种方式 先说说动态生成的内容当作文件来下载的方法: 1.通过把Content-Type设置为application/octet-stream,可以把动态生成的内容当作文件来 ...

  3. 转:PHP导出excel文件的几种方式

    PHP导出excel文件的几种方式 文章来源:http://www.cnblogs.com/fredshare/archive/2012/10/29/2744243.html 先说说动态生成的内容当作 ...

  4. 关于NPOI导出excel文件(xls和xlsx两种格式)提示格式不符的问题

    这两天在做导出excel文件的时候遇到这个问题 本来我导出的格式是xlsx格式的,但是下载得到的文件格式变成了xls, 一开始以为是返回的contenttype设置错了 return File(ms, ...

  5. C# Microsoft.Office.Interop.Owc11 导出excel文件

    C# Microsoft.Office.Interop.Owc11 导出excel文件 1.新建项SupremeWindowsForms窗体应用项目(项目平台设置称X86) 注意:因为大多数第三方写的 ...

  6. 使用NPOI或EPPlus来导出Excel文件实例,可在Excel文件加密

    使用NPOI.dll组件来导出Excel文件,并设置样式,Nuget引用即可. packages\NPOI.2.1.3.1\lib\net20\NPOI.dll #region Excel prote ...

  7. 使用NPOI导出Excel文件

    使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...

  8. C#,使用NPOI,导出excel文件

    /// <summary> /// 导出excel文件 /// </summary> /// <param name="dt">Table表数据 ...

  9. c# datagridview导出Excel文件 问题

    今天vs2010c#开发做datagridview导出Excel文件时,发现一个问题,和大家探讨一下: 第一种方式:写流的方式 private void button_Excel_Click(obje ...

随机推荐

  1. ssh登录很慢解决方法

    使用ssh客户端(如:putty)连接Linux服务器,可能会等待10-30秒才有提示输入密码.严重影响工作效率.登录很慢,登录上去后速度正常,这种情况主要有两种可能的原因: 1. DNS反向解析问题 ...

  2. atoi、stoi、strtoi区别

    首先atoi和strtol都是c里面的函数,他们都可以将字符串转为int,它们的参数都是const char*,因此在用string时,必须调c_str()方法将其转为char*的字符串.或者atof ...

  3. Java 单文件下载及重命名

    代码(仅供参考): /* * 另存为 */ @RequestMapping("/saveAs.do") public @ResponseBody void saveAs(Strin ...

  4. table 数据少时 ,tr高度变化

    table设置固定高度,如果点击分页,数据条数发生变化时,tr的高度会变化. 解决办法:table外  加div层  将table隔离.

  5. Facade 模式

    在软件系统开发中经常回会遇到这样的情况,你实现了一些接口(模块),而这些接口(模块)都分布在几个类中(比如 A和 B.C.D) :A中实现了一些接口,B 中实现一些接口(或者 A代表一个独立模块,B. ...

  6. GridBagLayout的帮助类

    自备详细注释 /* * To change this license header, choose License Headers in Project Properties. * To change ...

  7. CSS3 Animation学习笔记

    Internet Explorer 9,以及更早的版本, 不支持 @keyframe 规则或 animation 属性. Internet Explorer 10.Firefox 以及 Opera 支 ...

  8. PHP下编码转换函数mb_convert_encoding与iconv的使用说明

    mb_convert_encoding这个函数是用来转换编码的. 不过英文一般不会存在编码问题,只有中文数据才会有这个问题.比如你用Zend Studio或Editplus写程序时,用的是gbk编码, ...

  9. phpcms栏目调用

    {loop subcat(0,0,0,$siteid) $r} {php $num++} <h3><a href="{$r[url]}">{$r[catna ...

  10. Python自动化运维之26、Web框架本质、MVC与MTV

    一.Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:ut ...