刚刚初入职场,在休闲的时间写下了项目中用到的对Excel文档操作的方法以及总结,多的不说,直接上代码

public static void CreateExcel(DataSet ds, string FileName)

{

//resp = Page.Response;

HttpContext.Current.Response.Clear();

HttpContext.Current.Response.Buffer = true;

HttpContext.Current.Response.Charset = "UTF-8";

HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");

HttpContext.Current.Response.ContentType = "application/ms-excel";

string colHeaders = "", ls_item = "";

int i = 0;

//定¨义?表括?对?象ó与?行D对?像?,?同?时骸?用?DataSet对?其?值μ进?行D初?始?化ˉ

System.Data.DataTable dt = ds.Tables[0];

DataRow[] myRow = dt.Select("");

//取?得?数簓据Y表括?各÷列标括?题琣,?各÷标括?题琣之?间?以?\t分?割?,?最?后ó一?个?列标括?题琣后ó加ó回?车μ符?

for (i = 0; i < dt.Columns.Count - 1; i++)

colHeaders += dt.Columns[i].Caption.ToString() + "\t";

colHeaders += dt.Columns[i].Caption.ToString() + "\n";

//向òHTTP输?出?流ⅰ?中D写′入?取?得?的?数簓据Y信?息¢

HttpContext.Current.Response.Write(colHeaders);

//逐e行D处鋦理え?数簓据Y

foreach (DataRow row in myRow)

{

//在ú当獭?前°行D中D,?逐e列获?得?数簓据Y,?数簓据Y之?间?以?\t分?割?,?结á束?时骸?加ó回?车μ符?\n

for (i = 0; i < dt.Columns.Count - 1; i++)

ls_item += row[i].ToString() + "\t";

ls_item += row[i].ToString() + "\n";

//当獭?前行D数簓据Y写′入?HTTP输?出?流ⅰ?,?并¢且ò置?空?ls_item以?便?下?行D数簓据Y

HttpContext.Current.Response.Write(ls_item);

ls_item = "";

}

//写′缓o冲?区?中D的?数簓据Y到?HTTP头?文?件t中D

HttpContext.Current.Response.End();

}

方法2:NPIO导出Excel数据。这种方式方便快捷,要引入第三方的NPIO.dll的文件,下载地址http://npoi.codeplex.com/releases/view/38113

protected void getExcel(DataTable dt, string FileName)

{

NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();

NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("Sheet1");

NPOI.SS.UserModel.IRow headerrow = sheet.CreateRow(0);

for (int i = 0; i < dt.Columns.Count; i++)

{

headerrow.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);

}

for (int i = 0; i < dt.Rows.Count; i++)

{

NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(i + 1);

for (int j = 0; j < dt.Columns.Count; j++)

row2.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());

}

//写′入到客户端

System.IO.MemoryStream ms = new System.IO.MemoryStream();

book.Write(ms);

Response.AddHeader("Content-Disposition", string.Format("attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls"));

Response.BinaryWrite(ms.ToArray());

book = null;

ms.Close();

ms.Dispose();

}

直接在点击事件调用即可

二,导入Excel数据

导入Excel需要引用微软官方的OleDb驱动

protected void btnUpload_Click(object sender, EventArgs e)

{

if (txtFilePath.HasFile)

{

OleDbConnection conn = new OleDbConnection();

OleDbCommand cmd = new OleDbCommand();

OleDbDataAdapter da = new OleDbDataAdapter();

DataSet ds = new DataSet();

string query = null;

string connString = "";

//string strFileName = DateTime.Now.ToString("ddMMyyyy_HHmmss");

string strFileType = System.IO.Path.GetExtension(txtFilePath.FileName).ToString().ToLower();

if (strFileType == ".xls" || strFileType == ".xlsx")

{

txtFilePath.SaveAs(Server.MapPath("~/upload/" + strFileType));

}

string strNewPath = Server.MapPath("~/upload/" + strFileType);

if (strFileType.Trim() == ".xls")

{

connString = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + strNewPath + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";

}

else if (strFileType.Trim() == ".xlsx")

{

connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";

}

query = "SELECT * FROM [Sheet1$]";

conn = new OleDbConnection(connString);

if (conn.State == ConnectionState.Closed) conn.Open();

cmd = new OleDbCommand(query, conn);

da = new OleDbDataAdapter(cmd);

ds = new DataSet();

da.Fill(ds);

da.Dispose();

conn.Close();

conn.Dispose();

注意:如果使用上述的第一种方式先导出Excel,然后在导入Excel,会报错,因为第一种方式导出的不是标准的Excel,是html的方式导出的,第二种NPIO导出,这个是标准的Excel数据。

Asp.net的对Excel文档的导入导出操作的更多相关文章

  1. NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx 格式

    下载地址 http://npoi.codeplex.com/releases 下面放一个 NPOIHelper 助手类吧,也不是我写的- NpoiExcelHelper 可以生成xlsx格式publi ...

  2. ASP.NET MVC下载excel文档

    问题来自论坛: 很早以前,学习做asp.net练习时,就是分享过<ASP.NET MVC应用程序实现下载功能>http://www.cnblogs.com/insus/p/3615714. ...

  3. NPOI 2.1.1 系列(2) 使用NPOI读取List或者datatable数据生成 Excel文档 ;Npoi生成 xlsx 2007以上文档

    结合上一篇文章  NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx ...

  4. Easypoi实现excel多sheet表导入导出功能

    Easypoi简化了开发中对文档的导入导出实现,并不像poi那样都要写大段工具类来搞定文档的读写. 第一步引入Easypoi依赖 <!-- 导出文件工具 EasyPoi实现Excel读写管理测试 ...

  5. 转:ASP.NET MVC 将IList<T>导出Excel文档的泛型类

    /// <summary> /// 提供将泛型集合数据导出Excel文档. /// </summary> /// <typeparam name="T" ...

  6. ASP.NET 导入EXCEL文档

    鉴于教务一般都是手动输入学生信息,在未了解本校数据库的客观情况之下,我们准备设计一个导入excel文档中学生信息如数据库的功能.结合网上各类大牛的综合版本出炉.. 首先具体的实现思想如下: 1.先使用 ...

  7. 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

    我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...

  8. 使用C#动态生成Word文档/Excel文档的程序测试通过后,部署到IIS服务器上,不能正常使用的问题解决方案

    使用C#动态生成Word文档/Excel文档的程序功能调试.测试通过后,部署到服务器上,不能正常使用的问题解决方案: 原因: 可能asp.net程序或iis访问excel组件时权限不够(Ps:Syst ...

  9. 一次Mono解析Excel文档编码出错排查记录

    最近在捯饬Asp.Net站点部署到Linux平台上面,在文档导入的操作中经过网上搜索采用了能够支持跨平台的ExcelDataReader组建.在本地windows上测试通过NuGet安装的组建,这货依 ...

随机推荐

  1. ecshop后台添加菜单项,权限问题

    ecshop后台自定义菜单涉及到几个重要的权限控制的文件,先做如下总结: 后台添加菜单项,并设置权限的步骤.:(以在系统模块添加申请友链菜单为例)commn.php       : \language ...

  2. 使用Transaction访问数据库(C#,TransactionScope,.NET 2.0)

    针对SQL2005和.NET 2.0的事物机制有了新的突破传统数据库事物访问机制,代码如下:                   或者这种,其实都差不多                         ...

  3. 解决ubuntu 14.04删ibus导致系统设置项目的损失后,,退出关机问题是不正常的

    已安装sogou第一篇文章.嫌ibus碍眼,习惯性删.我没想到会引起一系列问题.退出登录用户崩溃.系统设置非常多的项目. 它似乎ubuntu 14.04于ibus它不能被卸载(卸载iBus本身没有问题 ...

  4. SQL整理2

    数据库的概念 结构化查询语言:structured query language 简称:SQL 数据库管理系统:database management system 简称:DBMS 数据库管理员:da ...

  5. window.open() 使用详解

    Window_Open详解    引:Window_Open详解一.window.open()支持环境:JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二. ...

  6. js——BOM

    BOM:Browser Object Model  浏览器对象模型 open(页面的地址url,打开的方式) :方法  打开一个新的窗口(页面) 如果url为空,折磨人打开一个空白页面 如果打开方式为 ...

  7. C++ Builder平台使用Indy9开发自动FTP程序01

    Indy9与CB自带的Indy8不同处还是挺多的.首先就是图标变漂亮了,其次很多Method都重写了.它主要是依据Delph里的函数,力求与之相通.不同点在本系列的后续章节中会一一介绍. 在写ftp代 ...

  8. leetcode Single Number python

    #question : Given an array of integers, every element appears twice except for one. Find that single ...

  9. Windows 7/Vista 开机自动登录

    “Win”+“R”打开命令窗口,输入"control userpasswords2"(不包括引号),或者 “rundll32 netplwiz.dll,UsersRunDll” 回 ...

  10. CTreeCtrl点击获得选中项

    相应TVN_SELCHANGED可以得到选中的项,在相应函数内如下: LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(p ...