---恢复内容开始---

using Microsoft.Office.Interop.Excel; 
针对office 2003需添加引用Microsoft   Excel   11.0   Object   Library

如添加之后还不能用再using microsoft.office.core和excel

引用的dll为

Interop.Microsoft.Office.Core.dll

Interop.Excel.dll

Excel导出类:

using System;
using System.IO;
using System.Data;
using Microsoft.Office.Interop.Excel;
 
    ///   <summary> 
    ///   导出Excal文件
    ///   </summary> 
public class ImportExcel
{
    private string title;
    private string rpt_name;
    private string outFilePath;
    private System.Data.DataTable dt;
    private System.Data.DataTable outTable;
 
    public ImportExcel()
    {
 
    }
 
    ///   <summary> 
    ///   设置Excel标题 
    ///   </summary> 
    public string rptName
    {
        get
        {
            return title;
        }
        set
        {
            title = value;
        }
    }
 
    ///   <summary> 
    ///   需要导入EXCEL的表 
    ///   </summary> 
    public System.Data.DataTable RptData
    {
        get
        {
            return dt;
        }
        set
        {
            dt = value;
        }
    }
 
    ///   <summary> 
    ///   设置输出文件的存放位置 
    ///   </summary> 
    public string OutFilePath
    {
        get
        {
            return outFilePath;
        }
        set
        {
            outFilePath = value;
        }
    }
 
    ///   <summary> 
    ///   构造函数,使用该类需传入Excel标题,DataTable,文件的存放路径 
    ///   </summary> 
    ///   <param   name="rptName">要设置的Excel标题</param> 
    ///   <param   name="dtable">要填充Excel的表</param> 
    ///   <param   name="FilePath">要存放的路径</param> 
    public ImportExcel(string rptName, System.Data.DataTable dtable, string file_path)
    {
        rpt_name = rptName;
        outTable = dtable;
        outFilePath = file_path;
 
        try
        {
            this.InsertExcel();
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
    }
 
    ///   <summary> 
    ///   该函数向Excel表中插入记录,要插入的数据为一个内存表.其中内存表中的列名为表中的列名 
    ///   该函数所使用的动态连接库Excel.dll,Office.dll,VBIDE.dll. 
    ///   </summary> 
    public void InsertExcel()
    {
        int col_count = 0;
        int row_count = 0;
        int k = 0;
        int l = 0;
 
        //检查文件是否存在 
        if (File.Exists(outFilePath))
        {
            throw new Exception("文件已存在,创建失败!");
        }
 
        Microsoft.Office.Interop.Excel.ApplicationClass rptApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
 
        rptApp.Application.Workbooks.Add(true);
 
        rptApp.Visible = false;
 
        object missing = System.Reflection.Missing.Value;
 
        Microsoft.Office.Interop.Excel.Workbook rptBook = rptApp.Workbooks[1];
        Microsoft.Office.Interop.Excel.Worksheet rptSheet = (Microsoft.Office.Interop.Excel.Worksheet)rptBook.ActiveSheet;
 
 
        //设置报表的标题 
        rptSheet.Cells[1, 1] = rpt_name;
 
        //插入列标题 
        foreach (DataColumn col in outTable.Columns)
        {
            col_count++;
            rptSheet.Cells[2, col_count] = col.ColumnName.ToString();
        }
        //设置列标题格式
        rptSheet.get_Range(rptSheet.Cells[2, 1],rptSheet.Cells[2, col_count]).Font.Bold = true; // 是否加粗:是
 
        //设置单元格的格式 
        foreach (DataRow dr in outTable.Rows)
        {
            row_count++;
            col_count = 0;
            foreach (DataColumn col in outTable.Columns)
            {
                col_count++;
                if (col.DataType == System.Type.GetType("System.String"))
                {
                    rptSheet.get_Range(rptSheet.Cells[1, 1], rptSheet.Cells[row_count + 2, col_count]).NumberFormatLocal = "@";
                }
                else if (col.DataType == System.Type.GetType("System.DateTime"))
                {
                    rptSheet.get_Range(rptSheet.Cells[1, 1], rptSheet.Cells[row_count + 2, col_count]).NumberFormatLocal = "yyyy-m-d";
                }
            }
        }
 
        //向报表插入记录 
        for (int i = 0; i < outTable.Rows.Count; i++)
        {
            for (int j = 0; j < outTable.Columns.Count; j++)
            {
                k = i + 3;
                l = j + 1;
                rptSheet.Cells[k, l] = outTable.Rows[i][j].ToString();
                rptSheet.get_Range(rptSheet.Cells[1, l], rptSheet.Cells[1, l]).Borders.LineStyle = 7;
                rptSheet.get_Range(rptSheet.Cells[2, l], rptSheet.Cells[2, l]).Borders.LineStyle = 1;
                rptSheet.get_Range(rptSheet.Cells[k, l], rptSheet.Cells[k, l]).Borders.LineStyle = 1;
            }
        }
 
        //设置标题的格式 
        rptSheet.get_Range(rptSheet.Cells[1, 1], rptSheet.Cells[1, 1]).Font.Bold = true;
        rptSheet.get_Range(rptSheet.Cells[1, 1], rptSheet.Cells[1, 1]).Font.Size = 22;
 
        //设置报表的标题为跨列居中合并单元格 
        rptSheet.get_Range(rptSheet.Cells[1, 1], rptSheet.Cells[1, col_count]).Select();
        rptSheet.get_Range(rptSheet.Cells[1, 1], rptSheet.Cells[1, col_count]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenterAcrossSelection;
 
        //设置报表表格为最适应宽度 
        rptSheet.get_Range(rptSheet.Cells[1, 1], rptSheet.Cells[row_count, col_count]).Select();
        rptSheet.get_Range(rptSheet.Cells[1, 1], rptSheet.Cells[row_count, col_count]).Columns.AutoFit();
 
        //另存文件到指定路径下 
        rptBook.SaveAs(outFilePath, missing, missing, missing, missing, missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
        //关闭文件 
        rptBook.Close(false, outFilePath, true);
        rptApp.Quit();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(rptSheet);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(rptBook);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(rptApp);
        //强制释放无用资源 
        GC.Collect();
    }
}

错误:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。

解决方法一:
控制面板-》管理工具-》组件服务-》计算机-》我的电脑-》DCom配置-》找到Microsoft Excel 应用程序
之后
单击属性打开此应用程序的属性对话框。  
2. 单击标识选项卡,然后选择交互式用户。 
3.单击"安全"选项卡,分别在"启动和激活权限"和"访问权限"组中选中"自定义",然后
自定义->编辑->添加ASP.NET账户和IUSER_计算机名: 需要本地激活,和本地访问两个权限

4."标识"选项卡 选择交互式用户

---恢复内容结束---

asp.net(C#) Excel导出类 导出.xls文件的更多相关文章

  1. 用javah 导出类的头文件, 常见的错误及正确的使用方法

    ******************************************************************************** 用javah 导出类的头文件, 常见的 ...

  2. Java解析Excel工具类(兼容xls和xlsx)

    依赖jar <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml&l ...

  3. Asp .Net Core Excel导入和导出

    ASP .Net Core使用EPPlus实现Api导入导出,这里使用是EPPlus 4.5.2.1版本,.Net Core 2.2.在linux上运行的时候需要安装libgdiplus . 下面我们 ...

  4. C#:导入Excel通用类(Xls格式)

    PS:在CSV格式和XLSX格式中有写到通用调用的接口和引用的插件,所以在这个xls格式里面并没有那么详细,只是配上xls通用类. 一.引用插件NPOI.dll.NPOI.OOXML.dll.NPOI ...

  5. Android 导入导出CSV,xls文件 .

    1 . http://www.bangchui.org/read.php?tid=62 2 .http://blog.csdn.net/xinzheng_wang/article/details/77 ...

  6. winform NPOI excel 导出并选择保存文件路径

    public void ExcelOp(DataGridView gdv,ArrayList selHead) { if (selHead.Count==0) { MessageBox.Show(&q ...

  7. php中使用PHPExcel读写excel(xls)文件的方法

    首先从GitHub上下载 excel的相关类库 下载地址:https://github.com/PHPOffice/PHPExcel 以下是从excel中获取数据 <?php /** * * @ ...

  8. 导入导出Excel工具类ExcelUtil

    前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...

  9. MVC NPOI Linq导出Excel通用类

    之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...

随机推荐

  1. DSP中的段

    虽然,C语言是一种相对高效的高级语言,并且TI提供的C编译器还结合硬件特点支持三级优化功能,但生成的汇编代码效率仍可能会不尽人意.如作者预使用环型缓冲区管理功能,这就要求该缓冲区应被定位到相对特定的位 ...

  2. machine leanring 笔记 octave命令笔记

    来源于coursea 的公开课 A*B 一般意义的矩阵相乘 A.*B矩阵各位相乘 A.^2 A矩阵的每个数平方 1./A  对A矩阵的各位取倒 .表示对每一项都如此操作 log (A) exp(A) ...

  3. loadrunner ---模拟多IP登录

    1.打开HP LoadRunner ->Tools ->IP Wizard

  4. 移动端bug整理,随时更新

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #454545 } p.p2 { margin: 0.0p ...

  5. 详解收发不畅原因及U-Mail邮件中继解决之道

    邮件在商务往来中扮演着信息交流的重要角色,假如传输受阻,必将造成沟通不畅:可能三五封邮件的投递你意识不到其重要性,但假如长期需和客户保持沟 通,则需要保证其一贯的稳定性,这就很考验相关软件平台的性能是 ...

  6. 常用前端框架Angular和React的一些认识

    为什么要用AngularJs? 要了解为什么使用AngularJS首先就要接受它的思想: 首先,angularJS借助了传统MVC的架构模式(model模型  view视图  controller控制 ...

  7. js中的原形链问题

    ---恢复内容开始--- 一.在js中大家讨论的原形链都是围绕在prototype和__proto__. 1.__proto__是内部原型 2.prototype是构造器原型(构造器就是构造函数) 3 ...

  8. photoshop cs5 key

    序列号: 1330-1164-2870-9234-4243-7879 1330-1027-8489-4513-0233-4890 1330-1176-2865-0373-1551-0175 1330- ...

  9. Java Iterator, ListIterator 和 foreach语句使用

    Java Iterator, ListIterator 和 foreach语句使用 foreach语句结构: for(part1:part2){part3};  part2 中是一个数组对象,或者是带 ...

  10. MongoDB数据导入导出成csv或者json

    1. 从远程数据表拉取数据到本地json文件 mongoexport --host 远程服务器IP --port 远程服务器端口 --username 远程数据库用户名 --password 远程数据 ...