asp.net(C#) Excel导出类 导出.xls文件

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

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."标识"选项卡 选择交互式用户

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

时间: 2024-10-13 17:31:19

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

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

今天在开发一个android项目的时候,需要用javah命令从android项目生成的CLASS文件中导出JNI的C语言头文件,但是报错了,如下图所示: 图1 图2 首先纠正一下图1中的错误:在windows的cmd窗口下,用cd  F:\...\...这样的命令不能定位到F:\...\...目录下,必须先输入F:,再按enter键,才能进入F:\...\...目录. 对于图2的错误,我参考了这篇文章:http://blog.csdn.net/hejinjing_tom_com/article/

javaEE开发之导出excel工具类

web开发中,一个系统的普通需求也包含导出excel,一般採用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell; import o

Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ?Copyright 蕃薯耀 2017年9月13日 http://www.cnblogs.com/fanshuyao/ 直接上代码: import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.ref

不依赖Excel是否安装的Excel导入导出类

本文利用第三方开源库NPOI实现Excel97-2003,Excel2007+的数据导入导出操作. 不依赖Office是否安装.NPOI开源项目地址:http://npoi.codeplex.com/. 库文件下载:http://npoi.codeplex.com/releases/view/115353 using System; using System.Collections; using System.Collections.Generic; using System.Data; usi

导出Excel帮助类

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; using System.Web; using System.Web.UI; namespace AIMSCommon { /// <summary> /// 导出Excel帮助类 /// </summary> public class ExcelHelper {

web开发之导出excel工具类

web开发中,一个系统的普通需求也包括导出excel,一般采用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell; import o

Asp.net中由DataSet数据类型导出Excel

今天要做一个功能 导出录取学生信息 费了半天劲结果被老师教育了一番 好了不抱怨了 DataSet数据类型导出Excel 好了不说了上源码 try { System.Web.HttpContext curContext = System.Web.HttpContext.Current; DataSet dsExcel = xqgl.Select_DCXSXXALL(); DataGrid dg = new DataGrid(); dg.DataSource = dsExcel; dg.DataBi

MVC NPOI Linq导出Excel通用类

之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = 0, Float = 1, Double = 2, String = 3, DateTime = 4, Date = 5 } public class ExportFieldInfo { /// <summary> /// 字段名,用于反射获取值 /// </summary> publi

在ASP MVC中如何使用Angular5导出excel文件

话不多说,直接来实际的. import { Injectable } from '@angular/core';import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';import { Observable } from 'rxjs';@Injectable() 首先引用基础组件. url: string; constructor(private http: HttpClient) { } 声明api路