Asp.net的对Excel文档的导入导出操作

刚刚初入职场,在休闲的时间写下了项目中用到的对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数据。

时间: 2024-08-07 00:07:49

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

ASP.NET MVC下载excel文档

问题来自论坛: 很早以前,学习做asp.net练习时,就是分享过<ASP.NET MVC应用程序实现下载功能>http://www.cnblogs.com/insus/p/3615714.html 比如你的excel文档,是存放于project的DownloadFiles目录之下: 创建一个控制器,如今个月为八月,就创建一个AugControllers: 上面有句“application/vnd.ms-excel” Office MIME type: 参考<Microsoft Offic

POI操纵EXCEL文档之导入文档(一)

             当前主流的后台管理系统,相信都会有文档导入导出的功能.而这其中用到的技术又是多种多样,有用POI框架,也有用JXLS技术的.技术只是手段,项目中实现功能最重要.今天主要说下如何利用POI技术操作EXCEL文档. POI 导入EXCEL文档: 1,首先,要导入EXCEL 文档,就必须要先有导入的模板文件,在这里,我提供好了制作好的EXCEL 模板文件提供下载:( EXCEL文档模板示例下载 ) 2,有了EXCEL 模板文件,就开始编写页面,并编写后台逻辑代码了: <%--

Asp.net中导出Excel文档(Gridview)

主要思路,通过GridView来导出文档. 新建一个Aspx页面,页面创建GridView控件,后台绑定好数据源.然后load中直接打印即可导出 前台的GridView <asp:GridView ID="GridView1" BorderColor="Black" runat="server" AutoGenerateColumns="False" Font-Size="12px" Width=&q

ASP.NET 导入EXCEl文档

鉴于教务一般都是手动输入学生信息,在未了解本校数据库的客观情况之下,我们准备设计一个导入excel文档中学生信息如数据库的功能.结合网上各类大牛的综合版本出炉.. 首先具体的实现思想如下: 1.先使用FileUpload控件fuload将Excel文件上传到服务器上得某一个文件夹. 2.使用OleDb将已经上传到服务器上的Excel文件读出来,这里将Excel文件当做一个数据库来读.在联系数据库语句中,Data Source就是该文件在服务器上得物理路径 3.将第二步中读出的数据以DataTab

支持将数据导出到Excel文档的时候设置单元格格式的.NET控件Spire.DataExport

Spire.DataExport for .NET是e-iceblue公司推出的一款数据导出类.NET控件.作为一款专业的数据导出控件,Spire.DataExport for .NET可以帮助开发人员轻松快速的从各种主流数据库中导出数据并存储于各种文件格式中.他支持从SQL Command, DataTable,ListView中导出数据并存储于MS Excel,MS Word, HTML, XML, PDF, MS Access, DBF, SQL Script, SYLK, DIF, CS

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

我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的博客介绍过几篇关于Aspose.Word控件和Aspose.Cell控件的使用操作,如下所示. <使用Aspose.Cell控件实现Excel高难度报表的生成(一)> <使用Aspose.Cell控件实现Excel高难度报表的生成(二)> <使用Aspose.Cell控件实现Ex

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

最近在捯饬Asp.Net站点部署到Linux平台上面,在文档导入的操作中经过网上搜索采用了能够支持跨平台的ExcelDataReader组建.在本地windows上测试通过NuGet安装的组建,这货依赖了SharpZipLib .Net下鼎鼎有名的解压缩组建,应该用来解压Excel文档的.本地测试没读取正常没有问题,但发布到Linux上运行总是无法读取,返回Null,这让我很是迷惑!接下来准备找出问题所在~ 1)下载了ExcelDataReader源码本地编译测试 问题依然存在,读取不到数据.

Go 语言读写 Excel 文档

Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准.可以使用它来读取.写入 XLSX 文件.相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式. 项目主页 github.com/Luxurioust/excelize 安装 go get github.com/Luxurioust/excelize 创建 XLSX packa

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支