.Net中Com组件导出Excel

首先添加两个引用,如下图:

在引用过程中可能会出现Microsoft.Office 11.0 Object Library引用不上,这个可能是你的Office2003没有选择支持.net导致的,你可以再次运行office的安装文件,然后找到excel项展开节点,选择支持.net

接着在页面里using Namespace:

using Excel = Microsoft.Office.Interop.Excel;

以下是详细代码:

#region Export Data
        /// <summary>
        /// 
       /// </summary>
        private void Export()
        {
            Excel.Application excel = new Excel.Application();
            Excel.Workbooks workbooks = excel.Workbooks;
            Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
            Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
            Excel.Range range = null;
            worksheet.Cells[1, 1] = "报关单Excel";
            range = (Excel.Range)worksheet.Cells[1, 1];
            range.Font.Bold = true;
            range.Font.Size = 18;
           //range.Interior.Color = 150; //根据索引设置颜色,索引及值对照参考resource/HelpPic  
            range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//设置文本居中
            range = (Excel.Range)worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, 5]);
            range.Select();
            range.Merge(false);

            range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight = Excel.XlBorderWeight.xlThin;
            string FileName = Server.MapPath("..\\..\\resource\\Templetes\\") + DateTime.Today.ToString("yyyyMMdd") + new Random(DateTime.Now.Millisecond).Next(1000000).ToString() + ".xls";
           
            //Foreach IList,And Add Data To Excel
            //Write Excel Header
            worksheet.Cells[3, 1] = "报关单号";
            worksheet.Cells[3, 2] = "运输工具";
            worksheet.Cells[3, 3] = "提运单号";
            worksheet.Cells[3, 4] = "核销单号";
            worksheet.Cells[3, 5] = "申报单位";
            worksheet.Cells[3, 6] = "经营单位";
            worksheet.Cells[3, 7] = "收/发货单位";
            worksheet.Cells[3, 8] = "申报日期";
            worksheet.Cells[3, 9] = "处理状态";
            worksheet.Cells[3, 10] = "进口/出口";
            worksheet.Cells[3, 11] = "关区";
            worksheet.Cells[3, 12] = "备注";
            worksheet.Cells[3, 13] = "更新时间";
            //Write Excexl Body
            int flag = 3;
            foreach (var w in lst)
            {
                flag += 1;
                worksheet.Cells[flag, 1] = w.entry_id_new ;
                worksheet.Cells[flag, 2] = w.TRAF_NAME;
                worksheet.Cells[flag, 3] = w.BILL_NO;
                worksheet.Cells[flag, 4] = w.APPR_NO;
                worksheet.Cells[flag, 5] = w.DECL_NAME;
                worksheet.Cells[flag, 6] = w.TRADE_NAME;
                worksheet.Cells[flag, 7] = w.SHIPPER;
                worksheet.Cells[flag, 8] = w.DECL_DATE;
                worksheet.Cells[flag, 9] = w.PROCESS_STATUS;
                worksheet.Cells[flag, 10] = w.EXP_IMP;
                worksheet.Cells[flag, 11] = w.SUB_CUS;
                worksheet.Cells[flag, 12] = w.NOTES;
                worksheet.Cells[flag, 13] = w.UPDATE_TIME;
            }
            try
            {
                workbook.Saved = true;
                workbook.SaveCopyAs(FileName);
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            workbooks.Close();
            if (excel != null)
            {
                excel.Workbooks.Close();
                excel.Quit();
                int Generation = System.GC.GetGeneration(excel);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
                excel = null;
                GC.Collect(Generation);
            }
            GC.Collect();//强行销毁  

            //关闭最近打开的Excel进程
            System.Diagnostics.Process[] excelProc = System.Diagnostics.Process.GetProcessesByName("EXCEL");
            System.DateTime startTime = new DateTime();
            int m, killId = 0;
            for (m = 0; m < excelProc.Length; m++)
            {
                if (startTime < excelProc[m].StartTime)
                {
                    startTime = excelProc[m].StartTime;
                    killId = m;
                }
            }
            if (excelProc[killId].HasExited == false)
            {
                excelProc[killId].Kill();
            }
            //提供下载  
            System.IO.FileInfo file = new System.IO.FileInfo(FileName);
            Response.Clear();
            Response.Charset = "UTF-8";
            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);
        }
        #endregion

转载于:https://www.cnblogs.com/susieweijs/archive/2011/03/30/1999465.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Free Spire.XLS for .NET 是 Spire.XLS for .NET 的免费版本,无需购买即可用于个人或商业用途。使用 Free Spire.XLS for .NET,开发人员可以在 .NET 应用程序快速对 Excel 文档进行各种编程操作,如根据模板创建新的 Excel 文档,编辑现有 Excel 文档以及对 Excel 文档进行转换等。Free Spire.XLS for .NET 是 Spire.XLS for .NET 的免费版本,无需购买即可用于个人或商业用途。使用 Free Spire.XLS for .NET,开发人员可以在 .NET 应用程序快速对 Excel 文档进行各种编程操作,如根据模板创建新的 Excel 文档,编辑现有 Excel 文档以及对 Excel 文档进行转换等。 主要功能如下: 1.100% 独立的 .NET 组件,无需 Microsoft Office Automation 2.强大的,高质量的 Excel 文件转换功能。支持将 Excel 文档快速高效地转换为多种常见的格式,如 XML,Text,PDF 和图片等。 3.使用全面的工作簿设计器创建 Excel 报表。支持开发人员新建 Excel 工作簿,从文件流或文件夹加载工作簿。还可以将工作薄保存到磁盘, 文件流或 Web Response,同时提供了多种安全功能,包括 Excel 加密/解密,单元格隐藏/取消隐藏,工作表锁定/解锁。 4.自由操作工作表。允许开发人员使用 C#、VB.NET 或 ASP.NET 来创建、添加、删除、重命名、编辑和移动工作表,开发人员还可以在多个充满数据的工作表之间进行复制、调换和合并操作。这个专业的 .NET Excel 类库嵌入了很多灵活显示工作表的选项,包括分页符,缩放设置,冻结窗口,页眉/页脚,打印 Excel 文件,打印页面尺寸和打印区域等。 5.在运行时轻松操作单元格和 Excel 计算引擎。开发人员可以在运行时使用 C#、VB.NET 或 ASP.NET 轻松地操作 Excel 单元格,计算公式值。该高速、可扩展的 Excel 计算引擎与 Excel 97-2003/2007/2010 等兼容。同时该组件支持设置单元格样式,如单元格的合并/拆分,文字环绕/取消环绕,文本排列和旋转、边框、锁定/解除等。字体格式,如设置字体类型、大小、颜色、粗体、斜体、删除线、下划线等等。条件格式,文本搜索和替换,过滤和数据验证等操作都可以轻松的应用到单元格。 6.图表、数据和其它元素。提供了一组丰富的图表,如饼状图,条形图,柱形图,折线图和雷达图等。此外,它支持使用 C#、VB.NET 或 ASP.NET 在数据库和 Excel 之间进行数据传输,支持超链接和模板,支持创建和获取数据透视表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值