因为我使用wpf简单写的一个Demo,我会将代码全部都写在这里面,里面有的地方有些乱,慢慢的再去整理,里面可能有参考其他人整理的代码,参考过来的!希望对大家有帮助
下面是MainWindow.xaml文件
<Window x:Class="_004ExportExcelDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"Title="MainWindow" Height="350" Width="525"><Grid><ListView x:Name="lv" HorizontalAlignment="Left" Height="273" Margin="10,10,0,0" VerticalAlignment="Top" Width="497"><ListView.View><GridView><GridViewColumn Width="50" Header="序号" DisplayMemberBinding="{Binding Index}"/><GridViewColumn Width="100" Header="学号" DisplayMemberBinding="{Binding Id}"/><GridViewColumn Width="100" Header="姓名" DisplayMemberBinding="{Binding Name}"/><GridViewColumn Width="50" Header="成绩" DisplayMemberBinding="{Binding Score}"/><GridViewColumn Width="100" Header="学科" DisplayMemberBinding="{Binding Subject}"/><GridViewColumn Width="100" Header="备注" DisplayMemberBinding="{Binding Remark}"/></GridView></ListView.View></ListView><Button Content="导出" HorizontalAlignment="Left" Margin="412,288,0,0" VerticalAlignment="Top" Width="95" RenderTransformOrigin="0.628,-0.37" Height="22" Click="Button_Click"/></Grid>
</Window>
下面是MainWindow.xaml.cs
using _004ExportExcelDemo.Models;
using System.Collections.Generic;
using System.Data;
using System.Windows;namespace _004ExportExcelDemo
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();this.Loaded += MainWindow_Loaded;}private void MainWindow_Loaded(object sender, RoutedEventArgs e){var list = new List<StudentModel>{new StudentModel{Index = 1, Id = "2013030001", Name = "梁志伟", Subject = "数学", Score = 95, Remark = "不错"},new StudentModel{Index = 2, Id = "2013030002", Name = "丁纪明", Subject = "数学", Score = 92, Remark = "不错"},new StudentModel{Index = 3, Id = "2013030003", Name = "舒伟琪", Subject = "数学", Score = 97, Remark = "不错"},new StudentModel{Index = 4, Id = "2013030004", Name = "王涛", Subject = "数学", Score = 88, Remark = "不错"},new StudentModel{Index = 5, Id = "2013030005", Name = "贾晓鹏", Subject = "数学", Score = 90, Remark = "不错"},new StudentModel{Index = 6, Id = "2013030006", Name = "徐菲", Subject = "数学", Score = 95, Remark = "不错"},};this.lv.ItemsSource = null;this.lv.ItemsSource = list;}private void Button_Click(object sender, RoutedEventArgs e){var list = this.lv.ItemsSource as List<StudentModel>;System.Windows.Forms.SaveFileDialog sfd = new System.Windows.Forms.SaveFileDialog();sfd.FileName = "导出内容.xls";sfd.Filter = "*.xls|";if (sfd.ShowDialog() != System.Windows.Forms.DialogResult.OK)return;Export(list, sfd.FileName);}private void Export(List<StudentModel> list, string path){var dt = new DataTable();dt.Columns.Add("序号");dt.Columns.Add("编号");dt.Columns.Add("姓名");dt.Columns.Add("学科");dt.Columns.Add("成绩");dt.Columns.Add("备注");foreach (var item in list){DataRow row = dt.NewRow();row[0] = item.Index;row[1] = item.Id;row[2] = item.Name;row[3] = item.Subject;row[4] = item.Score;row[5] = item.Remark;dt.Rows.Add(row);}NPOIExportExcelHelper.Instance.Export(dt, "", path);MessageBox.Show("导出成功!");}}
}
这里面实体就不写在里面了,下面是导出的操作
using System.Data;
using System.IO;
using System.Text;
using NPOI.HPSF;
using NPOI.HSSF.UserModel;
using System;
using NPOI.SS.Util;namespace _004ExportExcelDemo
{public class NPOIExportExcelHelper{private static NPOIExportExcelHelper _instance;public static NPOIExportExcelHelper Instance{get{if (_instance == null){_instance = new NPOIExportExcelHelper();}return NPOIExportExcelHelper._instance;}}/// <summary>/// DataTable导出到Excel文件/// </summary>/// <param name="dtSource">源DataTable</param>/// <param name="strHeaderText">表头文本</param>/// <param name="strFileName">保存位置</param>public void Export(DataTable dtSource, string strHeaderText, string strFileName){using (MemoryStream ms = Export(dtSource, strHeaderText)){using (FileStream fs = new FileStream(strFileName, FileMode.Create, FileAccess.Write)){byte[] data = ms.ToArray();fs.Write(data, 0, data.Length);fs.Flush();}}}/// <summary>/// DataTable导出到Excel的MemoryStream/// </summary>/// <param name="dtSource">源DataTable</param>/// <param name="strHeaderText">表头文本</param>public MemoryStream Export(DataTable dtSource, string strHeaderText){HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet();#region 右击文件 属性信息{DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();dsi.Company = "瑞杰";workbook.DocumentSummaryInformation = dsi;SummaryInformation si = PropertySetFactory.CreateSummaryInformation();si.Author = "文件作者信息"; //填加xls文件作者信息si.ApplicationName = "创建程序信息"; //填加xls文件创建程序信息si.LastAuthor = "最后保存者信息"; //填加xls文件最后保存者信息si.Comments = "作者信息"; //填加xls文件作者信息si.Title = "标题信息"; //填加xls文件标题信息si.Subject = "主题信息";//填加文件主题信息si.CreateDateTime = DateTime.Now;workbook.SummaryInformation = si;}#endregionHSSFCellStyle dateStyle = (HSSFCellStyle)workbook.CreateCellStyle();HSSFDataFormat format = (HSSFDataFormat)workbook.CreateDataFormat();dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd");dateStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;HSSFCellStyle CommonStyle = (HSSFCellStyle)workbook.CreateCellStyle();CommonStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//取得列宽int[] arrColWidth = new int[dtSource.Columns.Count];foreach (DataColumn item in dtSource.Columns){arrColWidth[item.Ordinal] = Encoding.GetEncoding(936).GetBytes(item.ColumnName.ToString()).Length;}for (int i = 0; i < dtSource.Rows.Count; i++){for (int j = 0; j < dtSource.Columns.Count; j++){int intTemp = Encoding.GetEncoding(936).GetBytes(dtSource.Rows[i][j].ToString()).Length;if (intTemp > arrColWidth[j]){arrColWidth[j] = intTemp;}}}int rowIndex = 0;foreach (DataRow row in dtSource.Rows){#region 新建表,填充表头,填充列头,样式if (rowIndex == 65535 || rowIndex == 0){if (rowIndex != 0){sheet = (HSSFSheet)workbook.CreateSheet();}#region 表头及样式{HSSFRow headerRow = (HSSFRow)sheet.CreateRow(0);headerRow.HeightInPoints = 25;headerRow.CreateCell(0).SetCellValue(strHeaderText);HSSFCellStyle headStyle = (HSSFCellStyle)workbook.CreateCellStyle();headStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;HSSFFont font = (HSSFFont)workbook.CreateFont();font.FontHeightInPoints = 20;font.Boldweight = 00;headStyle.SetFont(font);headerRow.GetCell(0).CellStyle = headStyle;sheet.AddMergedRegion(new Region(0, 0, 0, dtSource.Columns.Count - 1));}#endregion#region 列头及样式{HSSFRow headerRow = (HSSFRow)sheet.CreateRow(1);HSSFCellStyle headStyle = (HSSFCellStyle)workbook.CreateCellStyle();headStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;HSSFFont font = (HSSFFont)workbook.CreateFont();font.FontHeightInPoints = 12;font.Boldweight = 400;headStyle.SetFont(font);foreach (DataColumn column in dtSource.Columns){headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);headerRow.GetCell(column.Ordinal).CellStyle = headStyle;//设置列宽sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] + 1) * 256);}//headerRow.Dispose();}#endregionrowIndex = 2;}#endregion#region 填充内容HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex);foreach (DataColumn column in dtSource.Columns){HSSFCell newCell = (HSSFCell)dataRow.CreateCell(column.Ordinal);string drValue = row[column].ToString();switch (column.DataType.ToString()){case "System.String"://字符串类型newCell.SetCellValue(drValue);newCell.CellStyle = CommonStyle;//普通样式break;case "System.DateTime"://日期类型DateTime dateV;DateTime.TryParse(drValue, out dateV);newCell.SetCellValue(dateV);newCell.CellStyle = dateStyle;//格式化显示break;case "System.Boolean"://布尔型bool boolV = false;bool.TryParse(drValue, out boolV);newCell.SetCellValue(boolV);newCell.CellStyle = CommonStyle;//普通样式break;case "System.Int16"://整型case "System.Int32":case "System.Int64":case "System.Byte":int intV = 0;int.TryParse(drValue, out intV);newCell.SetCellValue(intV);newCell.CellStyle = CommonStyle;//普通样式break;case "System.Decimal"://浮点型case "System.Double":double doubV = 0;double.TryParse(drValue, out doubV);newCell.SetCellValue(doubV);newCell.CellStyle = CommonStyle;//普通样式break;case "System.DBNull"://空值处理newCell.SetCellValue("");newCell.CellStyle = CommonStyle;//普通样式break;default:newCell.SetCellValue("");newCell.CellStyle = CommonStyle;//普通样式break;}}#endregionrowIndex++;}using (MemoryStream ms = new MemoryStream()){workbook.Write(ms);ms.Flush();ms.Position = 0;//sheet.Dispose();//workbook.Dispose();//一般只用写这一个就OK了,他会遍历并释放所有资源,但当前版本有问题所以只释放sheetreturn ms;}}}
}
http://download.csdn.net/download/l_zhiwei/10207690

C# NPOI 导出Excel相关推荐

  1. Winform中通过NPOI导出Excel时通过ICellStyle和IDataFormat格式化日期显示格式

    场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...

  2. Winforn中通过NPOI导出Excel时通过XSSFClientAnchor和XSSFPicture添加图片

    场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...

  3. NPOI 导出 excel 性能测试

    NPOI 导出 excel 性能测试 Intro 网上看到很多人说 NPOI 的性能不行,自己写了一个 NPOI 的扩展库,于是想尝试看看 NPOI 的性能究竟怎么样,道听途说始终不如自己动手一试. ...

  4. Npoi导出excel整理(附源码)

    前些日子做了一个简单的winform程序,需要导出的功能,刚开始省事直接使用微软的组件,但是导出之后发现效率极其低下,绝对像web那样使用npoi组件,因此简单的进行了整理,包括直接根据DataTab ...

  5. .NET NPOI导出Excel详解

    http://www.cnblogs.com/yinrq/p/5590970.html .NET NPOI导出Excel详解 NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是 ...

  6. NPOI导出excel(带图片)

    近期项目中用到Excel导出功能,之前都是用普通的office组件导出的方法,今天尝试用下NPOI,故作此文以备日后查阅. 1.NPOI官网http://npoi.codeplex.com/,下载最新 ...

  7. NPOI导出Excel示例

    摘要:使用开源程序NPOI导出Excel示例.NPOI首页地址:http://npoi.codeplex.com/,NPOI示例博客:http://tonyqus.sinaapp.com/. 示例编写 ...

  8. C#利用NPOI导出Excel

    C#利用NPOI导出Excel 第一篇文章 View Code 1 using System; 2 using System.Collections.Generic; 3 using System.L ...

  9. NPOI导出excel设置打印为A4纸张

    NPOI导出excel设置打印为A4纸张: Sheet sheet1 = hssfworkbook.CreateSheet("表(横版)");                 sh ...

  10. NPOI导出Excel 65536限制

    1 #region NPOI 导出excel数据超65535自动分表 2 /// <summary> 3 /// DataTable转换成Excel文档流,并输出到客户端 4 /// &l ...

最新文章

  1. php 上下位置居中,CSS_css中position:fixed实现div在窗口上下左右居中,上下左右 居中 代码如下 复制 - phpStudy...
  2. C++知识点45——类继承中的类型转换与访问权限控制(上)
  3. 【BZOJ-2342】双倍回文 Manacher + 并查集
  4. 西南民大oj(矩阵快速幂)
  5. Hexo Reload in new Mac
  6. RecyclerView设置空视图
  7. 编程时,如何在vs中更换舒服的代码字体
  8. 最简单!阿里云服务器采用 LNMP一键安装包 配置 Linux+Nginx+Mysql+PHP
  9. 虚拟局域网软件开源_基于开源AUTOSAR的高级驾驶员辅助系统的设计与实现过程...
  10. 计算机技术的应用现状,计算机技术的应用现状分析及其发展趋势探究
  11. 泛微Ecology8.0移动端模板必填字段JS代码
  12. 未能加载文件或程序集
  13. 35岁鹅厂员工失业后嚎啕大哭...年轻新鹅分享省钱秘诀,每月除了房租水电,其他吃喝玩乐基本白嫖公司......
  14. 处理复旦大学中文文分类数据集
  15. 第一章:客户端网页编程简介
  16. 经典开源Windows工具
  17. 腾讯手游助手android文件夹,腾讯手游助手中找到文件安装目录位置的详细操作方法...
  18. 百分百医学论文发表网是个骗子网站
  19. 画【Python折线图】的一百个学习报告(三、自动生成单一数据折线图)
  20. GNSS产品下载链接

热门文章

  1. php怎么插入画笔,ps画笔怎么设置
  2. 北京住房公积金管理中心个人住房公积金 贷款等额均还月还款额参考表
  3. 前女友让我撸个植物大战僵尸,我一怒之下把代码开源了...
  4. 进程间的通信(Linux)
  5. C# 关于dgv中DataGridViewComboBoxCell触发事件
  6. Linux内存管理:HighMemory
  7. 网站关键词优化怎么做的(seo如何挖掘关键词)
  8. 百度UEditor编译器中获取HTML内容和纯文本,设置UEditor编辑器的内容
  9. Linux文档编辑命令
  10. acwing 206 石头游戏 矩阵快速幂