导出功能必须使用  office中EXCEl对象,整个操作如同在操作EXCEl一样,建立EXCEl应用----建立工作簿---建立sheet表单页,

代码实现过程中,如果想对单元格实现一些操作,或者汇总功能,可以先使用,EXCEl中的宏来操作。

使用方法  第一步:工具---宏----录制新宏---保存-----第二步:工具---宏---宏---编辑(编辑框中的代码就是在程序中所要使用的对象,和参数设置,可以通过excel对象来调用对象,直接在代码中操作excel)

protected string PrintExcel(string _printType, string _userid)
    {
        Excel.Application xApp = null;
        Excel.Workbook xBook = null;
        Excel.Worksheet xSheet = null;
        Excel.Range xRange = null;
        try
        {
            string targetDic = System.Web.HttpContext.Current.Server.MapPath("../") + "ReportFile\\";

string targetName = Session["RWTJHZ_txtDateStart"].ToString() + "至" + Session["RWTJHZ_txtDateEnd"].ToString() + "工作量汇总统计.xls";

xApp = new Excel.ApplicationClass();
            xBook = xApp.Workbooks.Add(true);
            xSheet = (Excel.Worksheet)xBook.Sheets[1];

DataTable _dt;

int _rowIndex = 0;

switch (_printType)
            {
                case "detail":
                    DataSet _dsContent = (DataSet)Session["RWTJHZ_dsContent"];
                    _dsContent.Tables[0].DefaultView.RowFilter = "userid='" + _userid + "'";
                    _dt = _dsContent.Tables[0].DefaultView.ToTable();

_dsContent.Tables[0].DefaultView.RowFilter = "";
                    string _biaozhi = "", _proType = "";
                    //如果是查询个人的工作量则修改文件名称
                    targetName = Session["RWTJHZ_txtDateStart"].ToString() + "至" + Session["RWTJHZ_txtDateEnd"].ToString() + "工作量汇总统计" + "(" + _dt.Rows[0]["username"] + ")" + ".xls";

//在填入内容之前先合并单元格
                    xRange = xSheet.get_Range(xApp.Cells[1, 1], xApp.Cells[1, 8]);
                    xRange.MergeCells = true;
                    xRange = xSheet.get_Range(xApp.Cells[3, 1], xApp.Cells[9, 1]);
                    xRange.MergeCells = true;

#region 标题
                    xRange = xSheet.get_Range(xApp.Cells[1, 1], xApp.Cells[1, 8]);
                    //合并标题单元格
                    xRange.MergeCells = true;
                    //内容
                    xRange.Value2 = targetName.TrimEnd('.', 'x', 'l', 's');
                    //设置居中
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    //字体大小为14
                    xRange.Font.Size = 16;
                    //字体加粗
                    xRange.Font.Bold = true;
                    #endregion

#region 表头
                    //姓名
                    xRange = xSheet.get_Range(xApp.Cells[2, 1], xApp.Cells[2, 1]);
                    xRange.Value2 = "姓名";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    xSheet.Columns.get_Range("A:A", Type.Missing).ColumnWidth = 21;

//工作名称
                    xRange = xSheet.get_Range(xApp.Cells[2, 2], xApp.Cells[2, 2]);
                    xRange.Value2 = "工作名称";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    xSheet.Columns.get_Range("B:B", Type.Missing).ColumnWidth = 18;
                    //类型
                    xRange = xSheet.get_Range(xApp.Cells[2, 3], xApp.Cells[2, 3]);
                    xRange.Value2 = "类型";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    xSheet.Columns.get_Range("C:C", Type.Missing).ColumnWidth = 10;
                    //地点
                    xRange = xSheet.get_Range(xApp.Cells[2, 4], xApp.Cells[2, 4]);
                    xRange.Value2 = "地点";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    xSheet.Columns.get_Range("D:D", Type.Missing).ColumnWidth = 15;
                    //工作开始时间
                    xRange = xSheet.get_Range(xApp.Cells[2, 5], xApp.Cells[2, 5]);
                    xRange.Value2 = "工作开始时间";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    xSheet.Columns.get_Range("E:E", Type.Missing).ColumnWidth = 16;
                    //工作结束时间
                    xRange = xSheet.get_Range(xApp.Cells[2, 6], xApp.Cells[2, 6]);
                    xRange.Value2 = "工作结束时间";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    xSheet.Columns.get_Range("F:F", Type.Missing).ColumnWidth = 16;
                    //工时
                    xRange = xSheet.get_Range(xApp.Cells[2, 7], xApp.Cells[2, 7]);
                    xRange.Value2 = "工时";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    //备注
                    xRange = xSheet.get_Range(xApp.Cells[2, 8], xApp.Cells[2, 8]);
                    xRange.Value2 = "备注";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    #endregion

#region 内容
                    //人员汇总信息
                    string _outlineMsg = "";
                    _outlineMsg += _dt.Rows[0]["username"].ToString();
                    _outlineMsg += "(" + _dt.Rows[0]["department"].ToString() + ")\r\n";
                    _outlineMsg += "节目制作工时:" + GetShowLength(_userid) + "\r\n";
                    _outlineMsg += "节目制作场次:" + GetShowCount(_userid) + "\r\n";
                    _outlineMsg += "值班工时:" + GetDutyLength(_userid) + "\r\n";
                    _outlineMsg += "派单出机工时:" + GetDispatchLength(_userid) + "\r\n";
                    _outlineMsg += "其他任务工时:" + GetRenWuLength(_userid) + "\r\n";
                    _outlineMsg += "总工时:" + GetWorkLength(_userid);

//xSheet.get_Range(xApp.Cells[3, 1], xApp.Cells[GVData.Rows.Count + 3, 1]).NumberFormatLocal = "@";
                    xSheet.get_Range(xApp.Cells[3, 1], xApp.Cells[9, 1]).Value2 = _outlineMsg;

for (int i = 0; i < _dt.Rows.Count; i++)
                    {
                        _rowIndex = i + 3;
                        //工作名称
                        xSheet.get_Range(xApp.Cells[_rowIndex, 2], xApp.Cells[_rowIndex, 2]).Value2 = _dt.Rows[i]["pro_Title"].ToString();
                        //类型
                        _biaozhi = _dt.Rows[i]["tableType"].ToString().Trim();
                        _proType = _dt.Rows[i]["pro_type"].ToString().Trim();
                        switch (_biaozhi)
                        {
                            case "pro":
                                if (_proType == "节目制作单")
                                {
                                    xSheet.get_Range(xApp.Cells[_rowIndex, 3], xApp.Cells[_rowIndex, 3]).Value2 = "节目制作";
                                }
                                else if (_proType == "简单任务")
                                {
                                    xSheet.get_Range(xApp.Cells[_rowIndex, 3], xApp.Cells[_rowIndex, 3]).Value2 = "其他任务";
                                }
                                break;
                            case "duty":
                                xSheet.get_Range(xApp.Cells[_rowIndex, 3], xApp.Cells[_rowIndex, 3]).Value2 = "值班";
                                break;
                            case "dis":
                                xSheet.get_Range(xApp.Cells[_rowIndex, 3], xApp.Cells[_rowIndex, 3]).Value2 = "出机";
                                break;
                        }
                        //地点
                        xSheet.get_Range(xApp.Cells[_rowIndex, 4], xApp.Cells[_rowIndex, 4]).Value2 = _dt.Rows[i]["pro_Place"].ToString();
                        //工作开始时间
                        xSheet.get_Range(xApp.Cells[_rowIndex, 5], xApp.Cells[_rowIndex, 5]).Value2 = _dt.Rows[i]["timeFr"].ToString();
                        //工作结束时间
                        xSheet.get_Range(xApp.Cells[_rowIndex, 6], xApp.Cells[_rowIndex, 6]).Value2 = _dt.Rows[i]["timeTo"].ToString();
                        //工时
                        xSheet.get_Range(xApp.Cells[_rowIndex, 7], xApp.Cells[_rowIndex, 7]).Value2 = _dt.Rows[i]["ot"].ToString();
                        //备注
                        xSheet.get_Range(xApp.Cells[_rowIndex, 8], xApp.Cells[_rowIndex, 8]).Value2 = _dt.Rows[i]["note"].ToString();
                    }
                    #endregion

//显示边框
                    xRange = xSheet.get_Range(xApp.Cells[1, 1], xApp.Cells[_rowIndex, 8]);
                    xRange.Borders.LineStyle = 1;
                    //取向
                    xSheet.PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape;

break;
                case "outline":
                    _dt = ((DataTable)Session["RWTJHZ_dtOutline"]).DefaultView.ToTable();

#region 标题
                    xRange = xSheet.get_Range(xApp.Cells[1, 1], xApp.Cells[1, 8]);
                    //合并标题单元格
                    xRange.MergeCells = true;
                    //内容
                    xRange.Value2 = targetName.TrimEnd('.', 'x', 'l', 's');
                    //设置居中
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    //字体大小为14
                    xRange.Font.Size = 16;
                    //字体加粗
                    xRange.Font.Bold = true;
                  
                    #endregion

#region 表头
                    //组别
                    xRange = xSheet.get_Range(xApp.Cells[2, 1], xApp.Cells[2, 1]);
                    xRange.Value2 = "组别";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    xSheet.Columns.get_Range("A:A", Type.Missing).ColumnWidth = 16;

//姓名
                    xRange = xSheet.get_Range(xApp.Cells[2, 2], xApp.Cells[2, 2]);
                    xRange.Value2 = "姓名";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    //节目制作工时
                    xRange = xSheet.get_Range(xApp.Cells[2, 3], xApp.Cells[2, 3]);
                    xRange.Value2 = "节目制作工时";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    //节目制作场次
                    xRange = xSheet.get_Range(xApp.Cells[2, 4], xApp.Cells[2, 4]);
                    xRange.Value2 = "节目制作场次";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    //值班工时
                    xRange = xSheet.get_Range(xApp.Cells[2, 5], xApp.Cells[2, 5]);
                    xRange.Value2 = "值班工时";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    //派单出机工时
                    xRange = xSheet.get_Range(xApp.Cells[2, 6], xApp.Cells[2, 6]);
                    xRange.Value2 = "派单出机工时";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    //其他任务工时
                    xRange = xSheet.get_Range(xApp.Cells[2, 7], xApp.Cells[2, 7]);
                    xRange.Value2 = "其他任务工时";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    //总工时
                    xRange = xSheet.get_Range(xApp.Cells[2, 8], xApp.Cells[2, 8]);
                    xRange.Value2 = "总工时";
                    xRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    xRange.WrapText = true;
                    xRange.Font.Size = 12;
                    xRange.Font.Bold = true;
                    #endregion

#region 内容
                    for (int i = 0; i < _dt.Rows.Count; i++)
                    {
                        _rowIndex = i + 3;

//组别
                        xSheet.get_Range(xApp.Cells[_rowIndex, 1], xApp.Cells[_rowIndex, 1]).Value2 = _dt.Rows[i]["department"].ToString();
                        //姓名
                        xSheet.get_Range(xApp.Cells[_rowIndex, 2], xApp.Cells[_rowIndex, 2]).Value2 = _dt.Rows[i]["username"].ToString();
                        //节目制作工时
                        xSheet.get_Range(xApp.Cells[_rowIndex, 3], xApp.Cells[_rowIndex, 3]).Value2 = _dt.Rows[i]["proLength"].ToString();
                        //节目制作场次
                        xSheet.get_Range(xApp.Cells[_rowIndex, 4], xApp.Cells[_rowIndex, 4]).Value2 = _dt.Rows[i]["proCount"].ToString();
                        //值班工时
                        xSheet.get_Range(xApp.Cells[_rowIndex, 5], xApp.Cells[_rowIndex, 5]).Value2 = _dt.Rows[i]["dutyLength"].ToString();
                        //派单出机工时
                        xSheet.get_Range(xApp.Cells[_rowIndex, 6], xApp.Cells[_rowIndex, 6]).Value2 = _dt.Rows[i]["disLength"].ToString();
                        //其他任务工时
                        xSheet.get_Range(xApp.Cells[_rowIndex, 7], xApp.Cells[_rowIndex, 7]).Value2 = _dt.Rows[i]["otherLength"].ToString();
                        //总工时
                        xSheet.get_Range(xApp.Cells[_rowIndex, 8], xApp.Cells[_rowIndex, 8]).Value2 = _dt.Rows[i]["totalLength"].ToString();
                    }
                    #endregion
                    break;
            }

xBook.SaveCopyAs(targetDic + targetName);

#region 代码回收
            try
            {
                if (xSheet != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet);
                    xSheet = null;
                }
                if (xBook != null)
                {
                    try
                    {
                        xBook.Close(false, System.Type.Missing, System.Type.Missing);
                    }
                    catch { }
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xBook);
                    xBook = null;
                }
                if (xApp != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xApp);
                    xApp = null;
                }
            }
            catch { }
            xApp = null;
            GC.Collect();
            #endregion

return targetDic + targetName;
        }
        catch (Exception ex)
        {
            ZWL.Common.PublicMethod.errorLog("PrintExcel", ex);

#region 代码回收
            try
            {
                if (xSheet != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet);
                    xSheet = null;
                }
                if (xBook != null)
                {
                    try
                    {
                        xBook.Close(false, System.Type.Missing, System.Type.Missing);
                    }
                    catch { }
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xBook);
                    xBook = null;
                }
                if (xApp != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xApp);
                    xApp = null;
                }
            }
            catch { }
            xApp = null;
            GC.Collect();
            #endregion

return "";
        }
    }

ASP.NET导出EXCEl方法使用EXCEl对象的更多相关文章

  1. ASP.NET导出EXCEl方法使用COM.EXCEL不使用EXCEl对象

    第一种:导出gridVIEW中的数据,用hansTABLE做离线表,将数据库中指定表中的所有数据按GRIDVIEW中绑定的ID导出 只能导出数据不能去操作相应的EXCEl表格,不能对EXCEL中的数据 ...

  2. 【转】asp.net导出数据到Excel的三种方法

    来源:http://www.cnblogs.com/lishengpeng1982/archive/2008/04/03/1135490.html 原文出处:http://blog.csdn.net/ ...

  3. ASP.NET常用导出Excel方法汇总

    本文转载:http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.html http://geekswithblogs.net/a ...

  4. ASP.NET导出Excel文件

    第一种最常见,并且最简单的方式,直接把GridView导出,导出格式为文本表格形式. protected void btnSaveExcel_Click(object sender, EventArg ...

  5. asp.net 导出excel文件

    之前做过winfrom程序的导出excel文件的功能,感觉非常简单.现在试着做asp.net中导出excel的功能,之前用的是Microsoft.Office.Interop.Excel这个对象来实现 ...

  6. asp.net导出excel科学计数问题

    方法一: 在asp.net 中 我一般都是将要导出的数据放到gridview网格里,首先对网格邦定数据时 字符串形式处理,然后再用普通的形式导出excel就把问题解决了. 我的代码非常简单:在邦定gr ...

  7. .NET导入导出Excel方法总结

    最近,应项目的需求,需要实现Excel的导入导出功能,对于Web架构的Excel导入导出功能,比较传统的实现方式是: 1)导入Excel:将Excel文件上传到服务器的某一文件夹下,然后在服务端完成E ...

  8. Asp.net导出Excel续章(自定义合并单元格,非Office组件)

    结合上次写的导出Excel方法,这次上头要求我将列头进行一下合并 以前的效果: 改进后的效果: 在上篇文章中写到了Excel的导出方法,这次为了避免在生产环境中使用Office组件,服务器各种权限配置 ...

  9. ASP.NET使用NPOI加载Excel模板并导出下载

    1.为什么要使用NPOI导出Excel? 一.解决传统操作Excel遇到的问题: 如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导 ...

随机推荐

  1. HTML5 javascript实现音乐播放器

    准备毕业了,感觉好多东西都没学会,太多太多想学的知识,有种求知若渴的状态. 四年的大学就剩下一个多月了,无论将来多么困难,这条路是自己选的,走就要走的精彩! 自学了一点javascript.php,做 ...

  2. strlen、strcmp、strcat、strcpy、memcpy基础函数的实现

    最近实习+投简历+琐事弄得自己忙的不行不行的,终于今天可以开始记录一些东西了... 1.strlen函数的实现 int strlen(const char *str){ assert(str!=NUL ...

  3. aix Mysql安装 Oracle官方教程

    http://dev.mysql.com/doc/refman/5.1/en/aix-installation.html   (aix Mysql安装 Oracle官方教程)

  4. jQuery插件

    1. Lightbox 2:    Lightbox 2 是一款很酷的图片显示插件,可以在一个平滑展开的新窗口中展现出图片,而同时页面的其余部分都变成黑色背景.使用这款插件,是为了当你的的图片过大必须 ...

  5. MySQL存储过程的基本函数

    (1).字符串类 CHARSET(str) //返回字串字符集 CONCAT (string2 [,... ]) //连接字串 INSTR (string ,substring ) //返回subst ...

  6. 浅谈android的selector,背景选择器

    shape和selector的结合使用 (2013-04-07 11:11:00) 转载▼   分类: android 1.Shape (1)作用:XML中定义的几何形状 (2)位置:res/draw ...

  7. POJ 1556 计算几何+最短路

    代码1: #include<iostream> #include<stdio.h> #include<string> #include<string.h> ...

  8. Linux 下编译Android-VLC开源播放器详解(附源码下载)

    这两天需要做音视频播放相关的东西,所以重新找了目前android下的解码库.Android自带的解码库支持不全,因此很多第三方播放器都是自带解码器,绝大部分都是使用FFMpeg作为解码库.我11年的时 ...

  9. sctf pwn200

    题目给出了pwn200和libc.so.使用IDA查看程序,发现逻辑很简单. 使用checksec查看pwn200的安全属性,如下图: 发现NX enabled,No PIE. 在第一次读(0x080 ...

  10. ASP.NET MVC 学习之路-1

    本文在于巩固基础 学习参考书籍:ASP.NET MVC4 Web编程 首先确定我们学习MVC的目标: 我们学习ASP.NET MVC的目的在于开发健壮的.可维护的Web应用,当然这需要一定的知识基础, ...