ExcelHelper
NPOI下载:http://pan.baidu.com/s/1JNAGm
最新封装类:
2016-03-14
1.添加对OleConn的读
private static string connstring = @"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" + path + ";Extended Properties=Excel 8.0";
public static DataTable ExecelTable(string sql, params OleDbParameter[] parameter)
{
using (OleDbConnection conn = new OleDbConnection(connstring))
{
conn.Open();
using (OleDbCommand comm = new OleDbCommand(sql, conn))
{
if (parameter != null) comm.Parameters.AddRange(parameter);
if (conn.State == ConnectionState.Closed) conn.Open();
DataTable dt = new DataTable();
OleDbDataAdapter oda = new OleDbDataAdapter(comm);
oda.Fill(dt);
return dt;
}
}
}
2016-04-16
sheet到datatable时候,表中一行是列名
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Reflection;
using System.Web; namespace ssm.Helper
{
public class ExcelHelper
{
#region 导入excel /// <summary>
/// 读取excel路径 生成 DataSet
/// </summary>
/// <param name="path"></param>
public static DataSet GetExcelToDs(string path)
{
DataSet ds = new DataSet();
using (FileStream fs = File.OpenRead(path))
{
using (Workbook wb = new HSSFWorkbook(fs))
{
for (int i = ; i < wb.NumberOfSheets; i++)
{
DataTable dt = ds.Tables[i];
using (Sheet s = wb.CreateSheet())
{
int RowLen = s.LastRowNum;
for (int j = ; j < RowLen; j++)
{
DataRow dr = dt.NewRow();
Row r = s.GetRow(j);
int ColLen = r.LastCellNum;
for (int k = ; k < ColLen; k++)
{
dr[k] = r.GetCell(k);
}
}
}
}
}
}
return ds;
}
public static DataTable GetExcelToDt(string path)
{
DataTable dt = new DataTable();
using (FileStream fs = File.OpenRead(path))
{
using (Workbook wb = new HSSFWorkbook(fs))
{
using (Sheet s = wb.GetSheetAt())
{
Row HeadRow = s.GetRow();
for (int t = ; t < HeadRow.LastCellNum; t++) //set DataTable columns name
{
dt.Columns.Add(HeadRow.GetCell(t).ToString());
} int RowLen = s.LastRowNum;
int ColLen = HeadRow.LastCellNum;
for (int j = ; j < RowLen; j++) // TO DataTable
{
int sheetNum = j + ;
DataRow dr = dt.NewRow();
Row r = s.GetRow(sheetNum); for (int k = ; k < ColLen; k++)
{
// int sheetNum = k + 1; if(r.GetCell(k) != null)
dr[k] = r.GetCell(k); }
dt.Rows.Add(dr);
}
}
}
}
return dt;
}
public static DataTable GetExcelToDt(FileStream fs)
{
DataTable dt = new DataTable();
using (Workbook wb = new HSSFWorkbook(fs))
{
using (Sheet s = wb.GetSheetAt())
{
Row HeadRow = s.GetRow();
for (int t = ; t < HeadRow.LastCellNum; t++) //set DataTable columns name
{
dt.Columns.Add(HeadRow.GetCell(t).ToString());
} int RowLen = s.LastRowNum;
for (int j = ; j < RowLen; j++) // TO DataTable
{
DataRow dr = dt.NewRow();
Row r = s.GetRow(j);
int ColLen = r.LastCellNum;
for (int k = ; k < ColLen; k++)
{
dr[k] = r.GetCell(k);
}
dt.Rows.Add(dr);
}
}
}
return dt;
}
#endregion #region 导出excel
/// <summary>
/// 表转化成excel并且下载
/// </summary>
/// <param name="dt">表</param>
/// <param name="title">文件名</param>
public static void CreateExcelToDown(DataTable dt, string title)
{
using (Workbook book = new HSSFWorkbook())
{
Sheet sheet = book.CreateSheet("sheet1"); Row headerrow = sheet.CreateRow();
CellStyle style = book.CreateCellStyle();
style.Alignment = HorizontalAlignment.CENTER;
//1.转化表头
for (int i = ; i < dt.Columns.Count; i++)
{
Cell cell = headerrow.CreateCell(i);
cell.CellStyle = style;
cell.SetCellValue(dt.Columns[i].ColumnName);
}
//2.填写数据
int RowLen = dt.Rows.Count;
int ColLen = dt.Columns.Count;
for (int i = ; i < RowLen; i++)
{
DataRow dr = dt.Rows[i];
Row r = sheet.CreateRow((i+));
for (int j = ; j < ColLen; j++)
{
r.CreateCell(j).SetCellValue(dr[j].ToString());
}
}
//3.下载
using (MemoryStream ms = new MemoryStream())
{
book.Write(ms);
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode(title + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8)));
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.End();
}
}
}
public static void CreateExcelToDown<T>(List<T> lt , string title)
{
Type type = lt.GetType();
PropertyInfo[] pi = type.GetProperties(); using (Workbook book = new HSSFWorkbook())
{
Sheet sheet = book.CreateSheet("sheet1"); Row headerrow = sheet.CreateRow();
CellStyle style = book.CreateCellStyle();
style.Alignment = HorizontalAlignment.CENTER; //1.转化表头
for (int i = ; i < pi.Length; i++)
{
Cell cell = headerrow.CreateCell(i);
cell.CellStyle = style;
cell.SetCellValue(pi[i].Name);
}
//2.填写数据
int RowLen = lt.Count; // get List<> count
int ColLen = pi.Length; // get proper length //3.下载
using (MemoryStream ms = new MemoryStream())
{
book.Write(ms);
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode(title + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8)));
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.End();
}
}
}
/// <summary>
/// DataSet 创建生成 excel文件,保存到本地
/// </summary>
/// <param name="name"></param>
/// <param name="ds"></param>
public static bool CreateExcelToFile(string name, DataSet ds)
{
bool isValue = false;
int DsLen = ds.Tables.Count;
using (Workbook wk = new HSSFWorkbook())
{
foreach (DataTable dt in ds.Tables)
{
using (Sheet s = wk.CreateSheet())
{
int RowLen = dt.Rows.Count;
int ColLen = dt.Columns.Count;
for (int i = ; i < RowLen; i++)
{
DataRow dr = dt.Rows[i];
Row r = s.CreateRow(i);
for (int j = ; j < ColLen; j++)
{
r.CreateCell(j).SetCellValue(dr[j].ToString());
}
}
using (FileStream fs = File.OpenWrite(System.Web.HttpContext.Current.Server.MapPath(name + @".xls")))
{
wk.Write(fs);
}
}
}
isValue = true;
}
return isValue;
} /// <summary>
/// DataTable创建生成Excel,保存到本地
/// </summary>
/// <param name="name"></param>
/// <param name="dt"></param>
/// <returns></returns>
public static bool CreateExcelToFile(string name, DataTable dt)
{
bool isValue = false;
using (Workbook wk = new HSSFWorkbook())
{
using (Sheet s = wk.CreateSheet())
{
int RowLen = dt.Rows.Count;
int ColLen = dt.Columns.Count;
for (int i = ; i < RowLen; i++)
{
DataRow dr = dt.Rows[i];
Row r = s.CreateRow(i);
for (int j = ; j < ColLen; j++)
{
r.CreateCell(j).SetCellValue(dr[j].ToString());
}
}
using (FileStream fs = File.OpenWrite(System.Web.HttpContext.Current.Server.MapPath(name + @".xls")))
{
wk.Write(fs);
}
}
isValue = true;
}
return isValue;
} /// <summary>
///error DataTable 创建生成 Excel ,生成文件流
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static MemoryStream CreateExcelToStream(DataTable dt)
{
using (Workbook wk = new HSSFWorkbook())
{
using (Sheet s = wk.CreateSheet())
{
int RowLen = dt.Rows.Count;
int ColLen = dt.Columns.Count;
for (int i = ; i < RowLen; i++)
{
DataRow dr = dt.Rows[i];
Row r = s.CreateRow(i);
for (int j = ; j < ColLen; j++)
{
r.CreateCell(j).SetCellValue(dr[j].ToString());
}
}
MemoryStream ms = new MemoryStream();
wk.Write(ms);
return ms;
}
}
}
#endregion } }
2016-05-11
修改4.16问题:表中一行是列名
public class ExcelHelper
{
#region 导入excel /// <summary>
/// 读取excel路径 生成 DataSet
/// </summary>
/// <param name="path"></param>
public static DataSet GetExcelToDs(string path)
{
DataSet ds = new DataSet();
using (FileStream fs = File.OpenRead(path))
{
using (Workbook wb = new HSSFWorkbook(fs))
{
for (int i = ; i < wb.NumberOfSheets; i++)
{
DataTable dt = ds.Tables[i];
using (Sheet s = wb.CreateSheet())
{
int RowLen = s.LastRowNum;
for (int j = ; j < RowLen; j++)
{
DataRow dr = dt.NewRow();
Row r = s.GetRow(j);
int ColLen = r.LastCellNum;
for (int k = ; k < ColLen; k++)
{
dr[k] = r.GetCell(k);
}
}
}
}
}
}
return ds;
}
public static DataTable GetExcelToDt(string path)
{
DataTable dt = new DataTable();
using (FileStream fs = File.OpenRead(path))
{
using (Workbook wb = new HSSFWorkbook(fs))
{
using (Sheet s = wb.GetSheetAt())
{
Row HeadRow = s.GetRow();
for (int t = ; t < HeadRow.LastCellNum; t++) //set DataTable columns name
{
dt.Columns.Add(HeadRow.GetCell(t).ToString());
} int RowLen = s.LastRowNum;
int ColLen = HeadRow.LastCellNum;
for (int j = ; j < RowLen; j++) // TO DataTable
{
int sheetNum = j + ;
DataRow dr = dt.NewRow();
Row r = s.GetRow(sheetNum); for (int k = ; k < ColLen; k++)
{
// int sheetNum = k + 1; if(r.GetCell(k) != null)
dr[k] = r.GetCell(k); }
dt.Rows.Add(dr);
}
}
}
}
return dt;
}
public static DataTable GetExcelToDt(FileStream fs)
{
DataTable dt = new DataTable();
using (Workbook wb = new HSSFWorkbook(fs))
{
using (Sheet s = wb.GetSheetAt())
{
Row HeadRow = s.GetRow();
for (int t = ; t < HeadRow.LastCellNum; t++) //set DataTable columns name
{
dt.Columns.Add(HeadRow.GetCell(t).ToString());
} int RowLen = s.LastRowNum;
for (int j = ; j < RowLen; j++) // TO DataTable
{
DataRow dr = dt.NewRow();
Row r = s.GetRow(j);
int ColLen = r.LastCellNum;
for (int k = ; k < ColLen; k++)
{
dr[k] = r.GetCell(k);
}
dt.Rows.Add(dr);
}
}
}
return dt;
}
#endregion #region 导出excel
/// <summary>
/// 表转化成excel并且下载
/// </summary>
/// <param name="dt">表</param>
/// <param name="title">文件名</param>
public static void CreateExcelToDown(DataTable dt, string title)
{
using (Workbook book = new HSSFWorkbook())
{
Sheet sheet = book.CreateSheet("sheet1"); Row headerrow = sheet.CreateRow();
CellStyle style = book.CreateCellStyle();
style.Alignment = HorizontalAlignment.CENTER;
//1.转化表头
for (int i = ; i < dt.Columns.Count; i++)
{
Cell cell = headerrow.CreateCell(i);
cell.CellStyle = style;
cell.SetCellValue(dt.Columns[i].ColumnName);
}
//2.填写数据
int RowLen = dt.Rows.Count;
int ColLen = dt.Columns.Count;
for (int i = ; i < RowLen; i++)
{
DataRow dr = dt.Rows[i];
Row r = sheet.CreateRow((i+));
for (int j = ; j < ColLen; j++)
{
r.CreateCell(j).SetCellValue(dr[j].ToString());
}
}
//3.下载
using (MemoryStream ms = new MemoryStream())
{
book.Write(ms);
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode(title + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8)));
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.End();
}
}
}
public static void CreateExcelToDown<T>(List<T> lt , string title)
{
Type type = lt.GetType();
PropertyInfo[] pi = type.GetProperties(); using (Workbook book = new HSSFWorkbook())
{
Sheet sheet = book.CreateSheet("sheet1"); Row headerrow = sheet.CreateRow();
CellStyle style = book.CreateCellStyle();
style.Alignment = HorizontalAlignment.CENTER; //1.转化表头
for (int i = ; i < pi.Length; i++)
{
Cell cell = headerrow.CreateCell(i);
cell.CellStyle = style;
cell.SetCellValue(pi[i].Name);
}
//2.填写数据
int RowLen = lt.Count; // get List<> count
int ColLen = pi.Length; // get proper length //3.下载
using (MemoryStream ms = new MemoryStream())
{
book.Write(ms);
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode(title + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8)));
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.End();
}
}
}
/// <summary>
/// DataSet 创建生成 excel文件,保存到本地
/// </summary>
/// <param name="name"></param>
/// <param name="ds"></param>
public static bool CreateExcelToFile(string name, DataSet ds)
{
bool isValue = false;
int DsLen = ds.Tables.Count;
using (Workbook wk = new HSSFWorkbook())
{
foreach (DataTable dt in ds.Tables)
{
using (Sheet s = wk.CreateSheet())
{
int RowLen = dt.Rows.Count;
int ColLen = dt.Columns.Count;
for (int i = ; i < RowLen; i++)
{
DataRow dr = dt.Rows[i];
Row r = s.CreateRow(i);
for (int j = ; j < ColLen; j++)
{
r.CreateCell(j).SetCellValue(dr[j].ToString());
}
}
using (FileStream fs = File.OpenWrite(System.Web.HttpContext.Current.Server.MapPath(name + @".xls")))
{
wk.Write(fs);
}
}
}
isValue = true;
}
return isValue;
} /// <summary>
/// DataTable创建生成Excel,保存到本地
/// </summary>
/// <param name="name"></param>
/// <param name="dt"></param>
/// <returns></returns>
public static bool CreateExcelToFile(string name, DataTable dt)
{
bool isValue = false;
using (Workbook wk = new HSSFWorkbook())
{
using (Sheet s = wk.CreateSheet())
{
int RowLen = dt.Rows.Count;
int ColLen = dt.Columns.Count;
for (int i = ; i < RowLen; i++)
{
DataRow dr = dt.Rows[i];
Row r = s.CreateRow(i);
for (int j = ; j < ColLen; j++)
{
r.CreateCell(j).SetCellValue(dr[j].ToString());
}
}
using (FileStream fs = File.OpenWrite(System.Web.HttpContext.Current.Server.MapPath(name + @".xls")))
{
wk.Write(fs);
}
}
isValue = true;
}
return isValue;
} /// <summary>
///error DataTable 创建生成 Excel ,生成文件流
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static MemoryStream CreateExcelToStream(DataTable dt)
{
using (Workbook wk = new HSSFWorkbook())
{
using (Sheet s = wk.CreateSheet())
{
int RowLen = dt.Rows.Count;
int ColLen = dt.Columns.Count;
for (int i = ; i < RowLen; i++)
{
DataRow dr = dt.Rows[i];
Row r = s.CreateRow(i);
for (int j = ; j < ColLen; j++)
{
r.CreateCell(j).SetCellValue(dr[j].ToString());
}
}
MemoryStream ms = new MemoryStream();
wk.Write(ms);
return ms;
}
}
}
#endregion }
2016.5.11
增加一个按模型类导出EXCEL的方法:
public string CreateExcelDown<T>(string Title, List<T> lt)
{
//用来分行色的
string color = "";
int num = ; StringBuilder sb = new StringBuilder();
Type type = typeof(T);
PropertyInfo[] pi = type.GetProperties(); //生成表头
sb.Append(@"<table style=""width:900px;"" cellpadding=""2"" cellspacing=""0"" align=""center"" border=""1"" bordercolor=""#000000"">");
sb.Append("<tbody> <tr>"); sb.Append(@" <td colspan=""" + pi.Count() + @""" style=""text-align:center;""><h2>");
sb.Append(Title);
sb.Append("</h2></td>");
sb.Append("</tr>"); //生成列名
sb.Append("<tr>");
foreach (var p in pi)
{
sb.Append(@"<td style=""text-align:center;""><h4>" + p.Name + "</h4></td>");
}
sb.Append("</tr>"); //输入内容
foreach (var m in lt)
{
if ((num++) % == )
color = "background-color:#FFE500";
else
color = "";
sb.Append("<tr>");
foreach (var i in pi)
{
sb.AppendFormat(@"<td style=""text-align:center;{0}"">{1}</td>", color, i.GetValue(m, null));
}
sb.Append("</tr>");
} sb.Append("</tbody></table>"); return sb.ToString();
}
public string CreateExcelDown<T>(string Title, List<T> lt)
Title 表名,List<T> lt:你要用到的List集合
上面只是生成HTML,如果要下载还需要实习以下代码(MVC中):
public FileResult DownBmxx(bmmanVm s)
{
//1.获取信息表
List<bmmanVm> si = zsglBLL.GetBmMan(MyCookie.Read()); //2.剔除不要信息,只是给你做
if (s.DateTime != )
si = si.Where(x => x.DateTime == s.DateTime).ToList();
if (s.RecommName != null)
si = si.Where(x => x.RecommName == s.RecommName).ToList();
if (s.Card != null)
si = si.Where(x => x.Card.Contains(s.Card)).ToList();
if (s.Name != null)
si = si.Where(x => x.Name.Contains(s.Name)).ToList();
if (s.MajorName != null)
si = si.Where(x => x.MajorName.Contains(s.MajorName)).ToList();
if (s.SchoolName != null)
si = si.Where(x => x.SchoolName.Contains(s.SchoolName)).ToList(); //3.生成excel模型表
int i = ;
List<outBmxxExcelVm> lo = si.Select(x
=> new outBmxxExcelVm {
专业名=x.MajorName,
入学时间=x.DateTime,
姓名=x.Name,
学校名=x.SchoolName,
层次=x.lv,
类型=x.fm,
编号=i++,
负责人=x.RecommName
})
.ToList(); //4.生成下载流
string html = CreateExcelDown("招生信息表", lo);
byte[] fileContents = Encoding.Default.GetBytes(html); //5.文件流下载
return File(fileContents, "application/ms-excel", "招生信息表.xls");
ExcelHelper的更多相关文章
- C#EXCEL 操作类--C#ExcelHelper操作类
主要功能如下1.导出Excel文件,自动返回可下载的文件流 2.导出Excel文件,转换为可读模式3.导出Excel文件,并自定义文件名4.将数据导出至Excel文件5.将指定的集合数据导出至Exce ...
- 我写的一个ExcelHelper通用类,可用于读取或生成数据
读取或生成EXCEL数据的方法有很多,一般常见的有: 1.通过OFFICE EXCEL组件,优点:读取与生成EXCEL文件方便,缺点:服务器上必须安装OFFICE软件,且进程无法及时释放 2.通过第三 ...
- Excel导入数据(97--2003版本)的ExcelHelper
首先确定excel的版本为97~2003版本 其次创建一个帮助类——ExcelHelper //单个sheet public static DataTable AnalysisExcel(string ...
- 【转】ExcelHelper类,用npoi读取Excel文档
//------------------------------------------------------------------------------------- // All Right ...
- [Excel] C# ExcelHelper操作类 (转载)
点击下载 ExcelHelper.rar 主要功能如下1.导出Excel文件,自动返回可下载的文件流 2.导出Excel文件,转换为可读模式3.导出Excel文件,并自定义文件名4.将数据导出至Exc ...
- 基于NPOI开源框架写的ExcelHelper【转载】
namespace ExcelTest { using System; using System.Collections.Generic; using System.Data; using Syste ...
- ExcelHelper Excel,Export,Import
using System; using System.Collections.Generic; using System.Data; using System.Data.Odbc; using Sys ...
- C# ExcelHelper
using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...
- x01.ExcelHelper: NPOI 操作
Excel 操作,具有十分明显的针对性,故很难通用,但这并不妨碍参考后以解决自己的实际问题. 有一汇总表如下: 当然,只是示范,产品的代码应该唯一!现在要根据此汇总表产生各个客户的产品清单.由于客户较 ...
随机推荐
- html框架—多对话框(相同id)处理
一个网站的数据大多数都是异步刷新的,这没什么好说的,然后现在很多前后端框架,大家都知道框架很好用,不用自己写样式,只要利用框架上的语法就能做出漂亮的动态的效果来,而用框架的话大多数的动态效果都是动态生 ...
- Java中的static的使用
Java中的static使用之静态变量 神话丿小王子的博客主页 1.Java 中被static修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.且优先于对象 ...
- iOS 学习 - 10下载(4) NSURLSession 会话 篇
NSURLConnection通过全局状态来管理cookies.认证信息等公共资源,这样如果遇到两个连接需要使用不同的资源配置情况时就无法解决了,但是这个问题在NSURLSession中得到了解决.N ...
- BitTorrent Sync - 神奇的文件同步软件,无需服务器让多台电脑互相同步!
176,487 微博 腾讯 空间 微信 141 49 如今人们对文件备份和同步的需求已经越来越强烈了.像 Dropbox 一样的云存储网盘有很多,但它们都有一个局限性,就是所有的文件都得经过它们的服务 ...
- 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Ubuntu 12.04 64bit系统下安装的vsftpd,在登陆时提示500 OOPS: vsftpd: refusing to run with writable root inside chr ...
- asp.net之treeview无法显示树结点图标(IP与域名的表现竟不一样)
背景 今天接到客户的电话,说部署上去的项目树型的treeview无法正常显示,显示成了好几个大红叉.如: 排查 于是我通过远程登录到服务器,在本地测试了一会发现没有这个问题存在,无论是通过IP ...
- 服务器磁盘扩展卷时遭遇“There is not enough space available on the disk(s) to complete this operation.”错误
在ESX VM的一台服务器由于磁盘空间告警,打算决定给E盘扩展空间,增加20G的空间,在操作过程遭遇了Expanding Disk Volume gives error "There is ...
- Javascript之旅——第一站:从变量说起
工作这几年,js学的不是很好,正好周末有些闲时间,索性买本<js权威指南>,大名鼎鼎的犀牛书,好好的把js深入的看一看.买过这本 书的第一印象就是贼厚,不过后面有一半部分都是参考手册. 一 ...
- 优化SQLServer——表和分区索引
概念: 简单地说,分区是将大型的对象(如表)分成更小的且易于管理的小块.分区的基本单位是行,需要注意的是与分区视图不同的地方时,分区必须位于同一个数据库内. 分区的原因: 对于非 ...
- 【转载】Linux NFS服务器的安装与配置
一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...