`

ASP_NET 导入EXCEL(HTML样式)

阅读更多
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();
}
分享到:
评论

相关推荐

    ASP_NET导出Excel数据方法总结

    此方法巧妙地利用SQL Server作为桥梁,通过执行OpenDataSource/OpenRowset与INSERT命令组合,将外部数据源导入Excel文件。具体而言,代码片段如下所示: ```sql insert into OpenRowSet('Microsoft.Jet.OLEDB.4.0',...

    ASP.NET 导入、导出Excel (支持Office Excel 2003、 2007)

    例如,使用CSS样式控制Excel样式,然后利用Response.ContentType和Response.BinaryWrite来生成并下载Excel文件。 二、导入Excel 1. **使用OleDbConnection和ADO.NET**: 对于Excel 2003及更早版本,可以使用OLEDB...

    AspDotNet_Excel导入导出测试

    在ASP.NET环境中,Excel的导入导出功能是开发过程中常见的需求,主要用于数据处理、报表生成以及数据交换等场景。本文将深入探讨如何在AspDotNet项目中实现Excel的导入和导出,以便更好地理解这一关键技能。 首先,...

    导入excel,处理合并表头、复杂表头、多行表头

    asp.net 导入excel时,处理合并表头、复杂表头、多行表头 1.解决复杂表头的Excel导入。可以解决任何复杂的表头。 2.导入时,显示请稍后。。。提醒框,完毕后会自动隐藏 3.全面扫描Excel数据,将所有异常详细信息写入...

    asp.net导入导出Excel表

    **导入Excel数据:** 1. 创建一个方法,接收文件上传的`HttpPostedFileBase`对象作为参数。 2. 使用NPOI的`HSSFWorkbook`类打开Excel文件。`HSSFWorkbook`是处理老版本(.xls)Excel文件的对象,如果是2007以后的....

    asp.net将gridview数据导入excel

    在ASP.NET开发中,将GridView数据导出到Excel是一种常见的需求,这可以帮助用户方便地管理和分析...总的来说,将GridView数据导入Excel是一个实用的功能,通过理解这些步骤和技巧,开发者可以轻松地满足用户的需求。

    asp.net页面实现Excel数据导入SqlServer

    在ASP.NET开发中,有时我们需要将Excel数据导入到SQL Server数据库中,这在处理大量数据时非常有用。本文将详细讲解如何使用ASP.NET、Excel组件和SQLDMO库来实现这个功能,同时也会提及第三方控件uploadify在文件...

    GridView数据导入ExcelExcel数据读入GridView

    GridView 数据导入 Excel 的实现方式 #### 实现原理 - **服务器端生成 HTML 表格**:将 GridView 控件渲染为 HTML 表格格式。 - **设置 HTTP 响应头**:指定响应类型为 `application/ms-excel` 并设置下载文件名。...

    C# Excel导入 Excel导出

    在.NET开发环境中,C#与ASP.NET结合使用可以实现高效的数据导入和导出功能,特别是与Excel文件交互。本文将详细讲解如何使用C#在ASP.NET项目中进行Excel的导入和导出操作,并重点关注速度优化。 一、Excel导入 1. ...

    c#Excel导入导出

    3. **导入Excel数据** - 创建`HSSFWorkbook`对象以读取.xls文件,或`XSSFWorkbook`对象以读取.xlsx文件。 - 使用`FileStream`打开Excel文件。 - 使用`Workbook`对象的`GetSheetAt()`方法获取指定索引的工作表。 ...

    通用ASP.NET Core NPOI导出复杂Word、Excel和Excel数据导入实战项目

    在ASP.NET Core中,你可以使用NPOI创建和编辑表格、设置单元格样式、插入图片等,实现复杂的文档操作。例如,通过`HSSFWorkbook`和`XSSFWorkbook`类可以分别处理Excel 2003(.xls)和Excel 2007+(.xlsx)格式的文件...

    NPOI.2.2.1.rar_NPOI 2.1.3.1 dll_excel_excel打印_lookogp_npoi 2.2.1

    1. **数据导入导出**:将数据库中的数据批量导入到Excel,或从Excel文件中读取数据到数据库,适用于数据分析、报表生成等场景。 2. **自定义样式**:可以设置单元格的字体、颜色、边框、填充等样式,创建复杂的表格...

    ASP.NET Excel操作技术大全

    ASP.NET Excel操作技术是Web开发中的重要组成部分,尤其在数据导入导出、报表生成和数据分析等场景中。本文将深入探讨ASP.NET环境下处理Excel文件的各种高级技巧,包括单元格样式设置、多表操作以及非自动化处理...

    .net web导入excel功能

    在.NET Web开发中,导入Excel功能是一个常见的需求,特别是在数据处理、数据分析以及用户交互的场景下。本篇文章将深入探讨如何在.NET Web应用中实现这一功能,并提供相关的知识点和技术细节。 1. **基础概念** - ...

    asp.net数据导入与数据导出Excel

    在ASP.NET开发中,数据导入和导出到Excel是一项常见的需求,这有助于用户方便地处理大量数据。在本文中,我们将深入探讨如何在ASP.NET环境中实现这个功能,特别是在与Access数据库交互时。 首先,让我们了解数据...

    将GridView中数据导入Excel中

    而将GridView中的数据导入Excel,能够方便用户对数据进行更复杂的处理、分析或分享。本实例提供了一个有效的方法,实现了从GridView到Excel的转换,并且在导入过程中保留了GridView的格式,使得Excel文件看起来与原...

    导入Excel.zip

    本项目“导入Excel.zip”提供了一个很好的学习案例,适用于那些正在学习ASP.NET WebAPI或者需要处理Excel导入功能的开发者。下面我们将深入探讨这个案例涉及的核心知识点。 1. **ASP.NET WebAPI基础**: ASP.NET ...

    asp.net 利用Npoi脱离Office导入导出Excel

    1. 导入Excel:这个方法接收上传的Excel文件,然后读取数据。Npoi提供了`HSSFWorkbook`(适用于旧版XLS格式)和`XSSFWorkbook`(适用于新版XLSX格式)类来打开工作簿。使用`ISheet`和`IRow`接口,你可以逐行读取数据...

    ASP.NET/C# 使用NPOI 将数据导入到模板Excel[支持xlsx][源代码]

    总之,NPOI是ASP.NET/C#开发中处理Excel文件的强大工具,它可以方便地将数据导入到预设模板中,适用于各种数据导出需求。通过理解NPOI的基本用法和结合实际项目需求,你可以创建灵活且高效的Excel处理逻辑。提供的...

Global site tag (gtag.js) - Google Analytics