//Datatable导出Excel private static void GridToExcelByNPOI(DataTable dt, string strExcelFileName)         {             try             { HSSFWorkbook workbook = new HSSFWorkbook();                  ISheet sheet = workbook.CreateSheet("Sheet1");                  ICellStyle HeadercellStyle = workbook.CreateCellStyle();                 HeadercellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;                 HeadercellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;                 HeadercellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;                 HeadercellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;                 HeadercellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;                 //字体                 NPOI.SS.UserModel.IFont headerfont = workbook.CreateFont();                 headerfont.Boldweight = (short)FontBoldWeight.Bold;                 HeadercellStyle.SetFont(headerfont);                   //用column name 作为列名                 int icolIndex = 0;                 IRow headerRow = sheet.CreateRow(0);                 foreach (DataColumn item in dt.Columns)                 {                     ICell cell = headerRow.CreateCell(icolIndex);                     cell.SetCellValue(item.ColumnName);                     cell.CellStyle = HeadercellStyle;                     icolIndex++;                 }                  ICellStyle cellStyle = workbook.CreateCellStyle();                  //为避免日期格式被Excel自动替换,所以设定 format 为 『@』 表示一率当成text來看                 cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("@");                 cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;                 cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;                 cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;                 cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;                   NPOI.SS.UserModel.IFont cellfont = workbook.CreateFont();                 cellfont.Boldweight = (short)FontBoldWeight.Normal;                 cellStyle.SetFont(cellfont);                  //建立内容行                 int iRowIndex = 1;                 int iCellIndex = 0;                 foreach (DataRow Rowitem in dt.Rows)                 {                     IRow DataRow = sheet.CreateRow(iRowIndex);                     foreach (DataColumn Colitem in dt.Columns)                     {                          ICell cell = DataRow.CreateCell(iCellIndex);                         cell.SetCellValue(Rowitem[Colitem].ToString());                         cell.CellStyle = cellStyle;                         iCellIndex++;                     }                     iCellIndex = 0;                     iRowIndex++;                 }                  //自适应列宽度                 for (int i = 0; i < icolIndex; i++)                 {                     sheet.AutoSizeColumn(i);                 }                  //写Excel                 FileStream file = new FileStream(strExcelFileName, FileMode.OpenOrCreate);                 workbook.Write(file);                 file.Flush();                 file.Close();                  MessageBox.Show(m_Common_ResourceManager.GetString("Export_to_excel_successfully"), m_Common_ResourceManager.GetString("Information"), MessageBoxButtons.OK, MessageBoxIcon.Information);             }             catch (Exception ex)             {                 ILog log = LogManager.GetLogger("Exception Log");                 log.Error(ex.Message + Environment.NewLine + ex.StackTrace);                 //记录AuditTrail                 CCFS.Framework.BLL.AuditTrailBLL.LogAuditTrail(ex);                  MessageBox.Show(m_Common_ResourceManager.GetString("Export_to_excel_failed"), m_Common_ResourceManager.GetString("Information"), MessageBoxButtons.OK, MessageBoxIcon.Information);             }             finally { workbook = null; }          }
/// <summary>         /// Excel文件导成Datatable         /// </summary>         /// <param name="strFilePath">Excel文件目录地址</param>         /// <param name="strTableName">Datatable表名</param>         /// <param name="iSheetIndex">Excel sheet index</param>         /// <returns></returns>         public static DataTable XlSToDataTable(string strFilePath, string strTableName,int iSheetIndex)         {              string strExtName = Path.GetExtension(strFilePath);              DataTable dt = new DataTable();             if (!string.IsNullOrEmpty(strTableName))             {                 dt.TableName = strTableName;             }              if (strExtName.Equals(".xls") || strExtName.Equals(".xlsx"))             {                 using (FileStream file = new FileStream(strFilePath, FileMode.Open, FileAccess.Read))                 {                     HSSFWorkbook workbook = new HSSFWorkbook(file);                     ISheet sheet = workbook.GetSheetAt(iSheetIndex);                      //列头                     foreach (ICell item in sheet.GetRow(sheet.FirstRowNum).Cells)                     {                         dt.Columns.Add(item.ToString(),typeof(string));                     }                      //写入内容                     System.Collections.IEnumerator rows = sheet.GetRowEnumerator();                     while(rows.MoveNext())                     {                         IRow row = (HSSFRow)rows.Current;                         if (row.RowNum == sheet.FirstRowNum)                         {                             continue;                         }                          DataRow dr = dt.NewRow();                         foreach (ICell item in row.Cells)                         {                             switch (item.CellType)                             {                                 case CellType.Boolean:                                     dr[item.ColumnIndex] = item.BooleanCellValue;                                     break;                                 case CellType.Error:                                     dr[item.ColumnIndex] = ErrorEval.GetText(item.ErrorCellValue);                                     break;                                 case CellType.Formula:                                     switch (item.CachedFormulaResultType)                                     {                                         case CellType.Boolean:                                             dr[item.ColumnIndex] = item.BooleanCellValue;                                             break;                                         case CellType.Error:                                             dr[item.ColumnIndex] = ErrorEval.GetText(item.ErrorCellValue);                                             break;                                         case CellType.Numeric:                                             if (DateUtil.IsCellDateFormatted(item))                                             {                                                 dr[item.ColumnIndex] = item.DateCellValue.ToString("yyyy-MM-dd hh:MM:ss");                                             }                                             else                                             {                                                 dr[item.ColumnIndex] = item.NumericCellValue;                                             }                                             break;                                         case CellType.String:                                             string str = item.StringCellValue;                                             if (!string.IsNullOrEmpty(str))                                             {                                                 dr[item.ColumnIndex] = str.ToString();                                             }                                             else                                             {                                                 dr[item.ColumnIndex] = null;                                             }                                             break;                                         case CellType.Unknown:                                         case CellType.Blank:                                         default:                                             dr[item.ColumnIndex] = string.Empty;                                             break;                                     }                                     break;                                 case CellType.Numeric:                                     if (DateUtil.IsCellDateFormatted(item))                                     {                                         dr[item.ColumnIndex] = item.DateCellValue.ToString("yyyy-MM-dd hh:MM:ss");                                     }                                     else                                     {                                         dr[item.ColumnIndex] = item.NumericCellValue;                                     }                                     break;                                 case CellType.String:                                     string strValue = item.StringCellValue;                                     if (string.IsNullOrEmpty(strValue))                                     {                                         dr[item.ColumnIndex] = strValue.ToString();                                     }                                     else                                     {                                         dr[item.ColumnIndex] = null;                                     }                                     break;                                 case CellType.Unknown:                                 case CellType.Blank:                                 default:                                     dr[item.ColumnIndex] = string.Empty;                                     break;                             }                         }                         dt.Rows.Add(dr);                     }                 }            }              return dt;         }

Datatable导出Excel的更多相关文章

  1. asp.net DataTable导出Excel 自定义列名

    1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如 ...

  2. c# Datatable导出Excel

    using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; ...

  3. C# DataTable导出EXCEL后身份证、银行卡号等长数字信息显示乱码解决

    在DataTable导出EXCEL后发现有些格式显示有问题,比如身份证.银行卡号等大于11位的数字显示为科学计数法.13681-1等 带中划线的两段数字显示为日期格式等. 处理方法如下: public ...

  4. 【转】C# DataTable 导出 Excel 进阶 多行表头、合并单元格、中文文件名乱码

    本文原创地址:http://blog.csdn.net/ranbolwb/article/details/8083983 ,转载请保留本行. 本例子是上一篇 DataTable 导出 Excel 的进 ...

  5. DataTable 更改在有数据列的类型方法+DataTable 导出excel功能

    /// <summary> /// 导出功能 /// </summary> /// <param name="sender"></para ...

  6. C# Datatable导出Excel方法

    C# 导出Excel方法  先引用下System.IO;System.data; 具体函数如下: public static bool ExportCSV(DataTable dt, string f ...

  7. NPOI DataTable导出excel

    /// <summary> /// DataTable导出到Excel文件 /// </summary> /// <param name="dtSource&q ...

  8. WinForm 使用 NPOI 2.2.1从datatable导出Excel

    最新的NOPI应该是2.3了,但在官网上还是2.2.1. 也是第一次使用NPOI来导出Excel文件. 在写的时候搜不到2.2.1的教程,搜了一个2.2.0的教程. 不过也没什么问题,NPOI是真的方 ...

  9. 【ASP.NET】DataTable导出EXCEL,弹窗提示下载保存(完整代码)

    //新建ASPX protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); Data ...

随机推荐

  1. matlab R2016b 设置界面为英文

    对于matlab的使用,最好还是使用英文好.这样既能让你熟悉直接的英文解释,也能学习一下英语. 对于中文版的matlab,默认的Matlab安装是中文,所以这里存在安装matlab后设置语言的需要. ...

  2. php 快速fork出指定个子进程

    $pids = array(); $child_pid = pcntl_fork(); if ($child_pid == -1) { throw new Exception( __METHOD__ ...

  3. php解压 tar.gz 格式文件

    1.运用php自带压缩与归档扩展(phar) $phar = new PharData('song.tar.gz'); //路径 要解压的文件 是否覆盖 $phar->extractTo('c: ...

  4. RabbitMQ介绍5 - 集群

    RabbitMQ内建集群机制,利用Erlang提供的开放电信平台(OTP,Open telecom Platform)通信框架,使得集群很容易进行横向扩展,提高系统吞吐量.这里只讨论集群的概念.原理, ...

  5. C++ 局部变量的析构

    http://blog.chinaunix.net/uid-52437-id-2108747.html 在一个函数内,申明一个局部类变量.则这个变量什么时候析构呢? 并不是在函数退出,释放栈空间时候析 ...

  6. Eclipse UML插件Green UML、AmaterasUML

    一.Green UML插件 1.查看Eclipse版本 查看当前电脑上安装的Eclipse版本(Help-About Eclipse Platform),是3.3.2版本的. 2.查看相应插件版本 然 ...

  7. Linux设置服务自启动(转载)

    From:http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统 ...

  8. .Net调用非托管代码数据类型不一致的问题

    什么是Net互操作?.Net不能直接操作非托管代码,这时就需要互操作了.   c#中调用非托管c++函数,此函数又包含指向某个结构的指针,譬如指向c#中的byte数组.对于这样的参数,考虑到非托管变量 ...

  9. ROWID-Oracle中删除重复行数据

    DELETE FROM DEPT_BAK WHERE ROWID NOT IN (SELECT MIN(ROWID) RID FROM DEPT_BAK GROUP BY DEPTNO,DNAME,L ...

  10. Servlet中的请求转发和重定向

    跳转和重定向 有的时候客户端请求到达服务端后需要对请求重新转发到其它Servlet甚至别的服务器,这就需要跳转和重定向. 区别 一般来说,跳转是服务器内部跳转,例如将请求从一个Servlet转发给另外 ...