ASP.NET 导入EXCEL 总汇
2008年02月21日 星期四 下午 02:37
1、由dataset生成
public void CreateExcel(DataSet ds,string typeid,string FileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
string colHeaders= "", ls_item="";
int i=0;
//定义表对象与行对像,同时用DataSet对其值进行初始化
DataTable dt=ds.Tables[0];
DataRow[] myRow=dt.Select("");
// typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件
if(typeid=="1")
{
//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for(i=0;i colHeaders+=dt.Columns[i].Caption.ToString()+"\t";
colHeaders +=dt.Columns[i].Caption.ToString() +"\n";
//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
//逐行处理数据
foreach(DataRow row in myRow)
{
//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for(i=0;i ls_item +=row[i].ToString() + "\t";
ls_item += row[i].ToString() +"\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item="";
}
}
else
{
if(typeid=="2")
{
//从DataSet中直接导出XML数据并且写到HTTP输出流中
resp.Write(ds.GetXml());
}
}
//写缓冲区中的数据到HTTP头文件中
resp.End();
}
2、由datagrid生成
public void ToExcel(System.Web.UI.Control ctl)
{
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");
HttpContext.Current.Response.Charset ="UTF-8";
HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.msexcel/
msword
ctl.Page.EnableViewState =false;
System.IO.StringWriter tw = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
用法:ToExcel(datagrid1);
3、这个用dataview
public void OutputExcel(DataView dv,string str)
{
//
// TODO: 在此处添加构造函数逻辑
//
//dv为要输出到Excel的数据,str为标题名称
GC.Collect();
Application excel;// = new Application();
int rowIndex=4;
int colIndex=1;
_Workbook xBk;
_Worksheet xSt;
excel= new ApplicationClass();
xBk = excel.Workbooks.Add(true);
xSt = (_Worksheet)xBk.ActiveSheet;
//
//取得标题
//
foreach(DataColumn col in dv.Table.Columns)
{
colIndex++;
excel.Cells[4,colIndex] = col.ColumnName;
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置标题格
式为居中对齐
}
//
//取得表格中的数据
//
foreach(DataRowView row in dv)
{
rowIndex ++;
colIndex = 1;
foreach(DataColumn col in dv.Table.Columns)
{
colIndex ++;
if(col.DataType == System.Type.GetType("System.DateTime"))
{
excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment =
XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐
}
else
if(col.DataType == System.Type.GetType("System.String"))
{
excel.Cells[rowIndex,colIndex] = "’"+row[col.ColumnName].ToString();
xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment =
XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐
}
else
{
excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();
}
}
}
//
//加载一个合计行
//
int rowSum = rowIndex + 1;
int colSum = 2;
excel.Cells[rowSum,2] = "合计";
xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = XlHAlign.xlHAlignCenter;
//
//设置选中的部分的颜色
//
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有
56种
//
//取得整个报表的标题
//
excel.Cells[2,2] = str;
//
//设置整个报表的标题格式
//
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;
//
//设置报表表格为最适应宽度
//
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();
//
//设置整个报表的标题为跨列居中
//
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;
//
//绘制边框
//
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1;
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[XlBordersIndex.xlEdgeLeft].Weight =
XlBorderWeight.xlThick;//设置左边线加粗
xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[XlBordersIndex.xlEdgeTop].Weight =
XlBorderWeight.xlThick;//设置上边线加粗
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeRight].Weight =
XlBorderWeight.xlThick;//设置右边线加粗
xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeBottom].Weight =
XlBorderWeight.xlThick;//设置下边线加粗
//
//显示效果
//
excel.Visible=true;
//xSt.Export(Server.MapPath(".")
+"file://"+this.xlfile.Text+".xls",SheetExportActionEnum.ssExportActionNone,Microsoft.Office.Interop.OWC.SheetExportForma
t.ssExportHTML/);
xBk.SaveCopyAs(Server.MapPath(".")+"file://"+this.xlfile.Text+".xls/ ");
ds = null;
xBk.Close(false, null,null);
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);
xBk = null;
excel = null;
xSt = null;
GC.Collect();
string path = Server.MapPath(this.xlfile.Text+".xls");
System.IO.FileInfo file = new System.IO.FileInfo(path);
Response.Clear();
Response.Charset="GB2312";
Response.ContentEncoding=System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AddHeader("Content-Length", file.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
Response.WriteFile(file.FullName);
// 停止页面的执行
Response.End();
}
分享到:
相关推荐
此方法巧妙地利用SQL Server作为桥梁,通过执行OpenDataSource/OpenRowset与INSERT命令组合,将外部数据源导入Excel文件。具体而言,代码片段如下所示: ```sql insert into OpenRowSet('Microsoft.Jet.OLEDB.4.0',...
例如,使用CSS样式控制Excel样式,然后利用Response.ContentType和Response.BinaryWrite来生成并下载Excel文件。 二、导入Excel 1. **使用OleDbConnection和ADO.NET**: 对于Excel 2003及更早版本,可以使用OLEDB...
在ASP.NET环境中,Excel的导入导出功能是开发过程中常见的需求,主要用于数据处理、报表生成以及数据交换等场景。本文将深入探讨如何在AspDotNet项目中实现Excel的导入和导出,以便更好地理解这一关键技能。 首先,...
asp.net 导入excel时,处理合并表头、复杂表头、多行表头 1.解决复杂表头的Excel导入。可以解决任何复杂的表头。 2.导入时,显示请稍后。。。提醒框,完毕后会自动隐藏 3.全面扫描Excel数据,将所有异常详细信息写入...
**导入Excel数据:** 1. 创建一个方法,接收文件上传的`HttpPostedFileBase`对象作为参数。 2. 使用NPOI的`HSSFWorkbook`类打开Excel文件。`HSSFWorkbook`是处理老版本(.xls)Excel文件的对象,如果是2007以后的....
在ASP.NET开发中,将GridView数据导出到Excel是一种常见的需求,这可以帮助用户方便地管理和分析...总的来说,将GridView数据导入Excel是一个实用的功能,通过理解这些步骤和技巧,开发者可以轻松地满足用户的需求。
在ASP.NET开发中,有时我们需要将Excel数据导入到SQL Server数据库中,这在处理大量数据时非常有用。本文将详细讲解如何使用ASP.NET、Excel组件和SQLDMO库来实现这个功能,同时也会提及第三方控件uploadify在文件...
GridView 数据导入 Excel 的实现方式 #### 实现原理 - **服务器端生成 HTML 表格**:将 GridView 控件渲染为 HTML 表格格式。 - **设置 HTTP 响应头**:指定响应类型为 `application/ms-excel` 并设置下载文件名。...
在.NET开发环境中,C#与ASP.NET结合使用可以实现高效的数据导入和导出功能,特别是与Excel文件交互。本文将详细讲解如何使用C#在ASP.NET项目中进行Excel的导入和导出操作,并重点关注速度优化。 一、Excel导入 1. ...
3. **导入Excel数据** - 创建`HSSFWorkbook`对象以读取.xls文件,或`XSSFWorkbook`对象以读取.xlsx文件。 - 使用`FileStream`打开Excel文件。 - 使用`Workbook`对象的`GetSheetAt()`方法获取指定索引的工作表。 ...
在ASP.NET Core中,你可以使用NPOI创建和编辑表格、设置单元格样式、插入图片等,实现复杂的文档操作。例如,通过`HSSFWorkbook`和`XSSFWorkbook`类可以分别处理Excel 2003(.xls)和Excel 2007+(.xlsx)格式的文件...
1. **数据导入导出**:将数据库中的数据批量导入到Excel,或从Excel文件中读取数据到数据库,适用于数据分析、报表生成等场景。 2. **自定义样式**:可以设置单元格的字体、颜色、边框、填充等样式,创建复杂的表格...
ASP.NET Excel操作技术是Web开发中的重要组成部分,尤其在数据导入导出、报表生成和数据分析等场景中。本文将深入探讨ASP.NET环境下处理Excel文件的各种高级技巧,包括单元格样式设置、多表操作以及非自动化处理...
在.NET Web开发中,导入Excel功能是一个常见的需求,特别是在数据处理、数据分析以及用户交互的场景下。本篇文章将深入探讨如何在.NET Web应用中实现这一功能,并提供相关的知识点和技术细节。 1. **基础概念** - ...
在ASP.NET开发中,数据导入和导出到Excel是一项常见的需求,这有助于用户方便地处理大量数据。在本文中,我们将深入探讨如何在ASP.NET环境中实现这个功能,特别是在与Access数据库交互时。 首先,让我们了解数据...
而将GridView中的数据导入Excel,能够方便用户对数据进行更复杂的处理、分析或分享。本实例提供了一个有效的方法,实现了从GridView到Excel的转换,并且在导入过程中保留了GridView的格式,使得Excel文件看起来与原...
本项目“导入Excel.zip”提供了一个很好的学习案例,适用于那些正在学习ASP.NET WebAPI或者需要处理Excel导入功能的开发者。下面我们将深入探讨这个案例涉及的核心知识点。 1. **ASP.NET WebAPI基础**: ASP.NET ...
1. 导入Excel:这个方法接收上传的Excel文件,然后读取数据。Npoi提供了`HSSFWorkbook`(适用于旧版XLS格式)和`XSSFWorkbook`(适用于新版XLSX格式)类来打开工作簿。使用`ISheet`和`IRow`接口,你可以逐行读取数据...
总之,NPOI是ASP.NET/C#开发中处理Excel文件的强大工具,它可以方便地将数据导入到预设模板中,适用于各种数据导出需求。通过理解NPOI的基本用法和结合实际项目需求,你可以创建灵活且高效的Excel处理逻辑。提供的...