`
ljl_xyf
  • 浏览: 636182 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c#生成Excel,可建立sheet,设定sheet名称,调整列宽度

    博客分类:
  • c#
阅读更多

Excel生成类  ExcelRW.cs

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Office.Interop.Excel;
using System.Collections;
using System.Diagnostics;

/// <summary>
/// Summary description for ExcelRW
/// </summary>
public static class ExcelRW
{


    public static void ExcelSave(Hashtable ht)
    {

        Application excel = new Application();//引用Excel对象

        Workbooks oBooks;
        Workbook oBook;
        Sheets oSheets;
        Worksheet oSheet;
        Range oCells;
        string sFile = ht["excelName"] as string;
        //excel.Save("ddd.xls");
        ArrayList alSheet = ht["sheetNameList"] as ArrayList;
        Workbook wb = excel.Workbooks.Add(true);//引用Excel工作簿
        excel.Visible = false;//使Excel可视
        oBooks = excel.Workbooks;
        oBook = oBooks.get_Item(1);
        oSheets = oBook.Worksheets;
        oSheet = (Worksheet)oSheets.get_Item(oSheets.Count);
        foreach (Hashtable htOneSheel in alSheet)
        {


            oSheet = (Worksheet)oSheets.get_Item(oSheets.Count);

            ArrayList ColNameList = htOneSheel["ColName"] as ArrayList;
            //命名该sheet
            oSheet.Name = htOneSheel["sheetName"] as string;
            System.Data.DataTable dtable = htOneSheel["dataRows"] as System.Data.DataTable;
            Range column = ((Range)oSheet.Cells[1, 1]).EntireColumn;
            column.ColumnWidth = 10;
            int iRow = 1;
            foreach (DataRow dr in dtable.Rows)
            {
                int icel = 1;
                for (int iCol = 0; iCol < ColNameList.Count; iCol++)
                {
                    oSheet.Cells[iRow, icel++] = Convert.ToString(dr[ColNameList[iCol].ToString()]);
                
                }
                iRow++;
            }
            oSheets.Add(Type.Missing, oSheets[oSheets.Count], 1, Type.Missing);
            //设定第一个sheet未活动sheet
            //((Worksheet)oSheets.get_Item(1)).Activate();
            oSheet = (Worksheet)oSheets.get_Item(1);

        }
        string strFilePathAndname = HttpContext.Current.Server.MapPath(".") + "/Excel/" + sFile;

        if (System.IO.File.Exists(strFilePathAndname))
        {
            System.IO.File.Delete(strFilePathAndname);
        }
        //excel.Workbooks.get_Item(1).Worksheets.Select(excel.Workbooks.get_Item(1).Worksheets[1]);
        oSheet.SaveAs(strFilePathAndname, Microsoft.Office.Interop.Excel.XlFileFormat.xlTemplate, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing);
        oBook.Close(false, Type.Missing, Type.Missing);
        //退出Excel,并且释放调用的COM资源
        excel.Quit();

        GC.Collect();
        //excel.Save("ddd.xls");
        KillProcess("Excel");
    }


    public static void Out2Excel(string sTableName, string url)
    {
        Microsoft.Office.Interop.Excel.Application oExcel = new Microsoft.Office.Interop.Excel.Application();
        Workbooks oBooks;
        Workbook oBook;
        Sheets oSheets;
        Worksheet oSheet;
        Range oCells;
        string sFile = "", sTemplate = "";
        //
        System.Data.DataTable dt = null;// TableOut(sTableName).Tables[0];

        sFile = url + "myExcel.xls";
        sTemplate = url + "MyTemplate.xls";
        //
        oExcel.Visible = false;
        oExcel.DisplayAlerts = false;
        //定义一个新的工作簿
        oBooks = oExcel.Workbooks;
        oBooks.Open(sTemplate, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        oBook = oBooks.get_Item(1);
        oSheets = oBook.Worksheets;

        oSheet = (Worksheet)oSheets.get_Item(1);
        //命名该sheet
        oSheet.Name = "Sheet1";
        //(Worksheet)oSheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        oCells = oSheet.Cells;
        //调用dumpdata过程,将数据导入到Excel中去
        //DumpData(dt, oCells);
        //保存
        oSheet.SaveAs(sFile, Microsoft.Office.Interop.Excel.XlFileFormat.xlTemplate, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing);
        oBook.Close(false, Type.Missing, Type.Missing);
        //退出Excel,并且释放调用的COM资源
        oExcel.Quit();

        GC.Collect();
        KillProcess("Excel");
    }

    private static void KillProcess(string processName)
    {
        System.Diagnostics.Process myproc = new System.Diagnostics.Process();
        //得到所有打开的进程
        try
        {
            foreach (Process thisproc in Process.GetProcessesByName(processName))
            {
                if (!thisproc.CloseMainWindow())
                {
                    thisproc.Kill();
                }
            }
        }
        catch (Exception Exc)
        {
            throw new Exception("", Exc);
        }
    }

}
 

 

测试使用代码

 

testExcelDown.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testExcelDown.aspx.cs" Inherits="testExcelDown" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="bnt_test" runat="server" OnClick="bnt_test_Click" Text="测试下载" /></div>
    </form>
</body>
</html>
 

 

 

 

 

testExcelDown.aspx.cs

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class testExcelDown : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void bnt_test_Click(object sender, EventArgs e)
    {
        DataSearch();
    }


    /// <summary>
    /// 生成excel数据准备
    /// </summary>
    private void DataSearch()
    {
        ArrayList arColName = new ArrayList();
        ArrayList alData = new ArrayList();
        
        arColName.Add("title");
        arColName.Add("url");
        DataTable dtSheet1 = new DataTable();
        dtSheet1.Columns.Add(new DataColumn("title"));
        dtSheet1.Columns.Add(new DataColumn("url"));
        //sheet1数据准备

        

         DataRow dr =   dtSheet1.NewRow();
         dr["title"] = "百度" ;
         dr["url"] = "http://www.baidu.com";
         dtSheet1.Rows.Add(dr);
         dr = dtSheet1.NewRow();
         dr["title"] = "400电话";
         dr["url"] = "http://www.my400800.cn";
         dtSheet1.Rows.Add(dr);
         dr = dtSheet1.NewRow();
         dr["title"] = "goole";
         dr["url"] = "http://www.google.cn";
         dtSheet1.Rows.Add(dr);
         dr = dtSheet1.NewRow();
         dr["title"] = "sina";
         dr["url"] = "http://www.sina.com.cn";
         dtSheet1.Rows.Add(dr);
         dr = dtSheet1.NewRow();
         dr["title"] = "tel4006";
         dr["url"] = "http://www.tel4006.com";
         dtSheet1.Rows.Add(dr);
         dr = dtSheet1.NewRow();
         dr["title"] = "soso";
         dr["url"] = "http://www.soso.com";
         dtSheet1.Rows.Add(dr);
         dr = dtSheet1.NewRow();
         dr["title"] = "gougou";
         dr["url"] = "http://www.gougou.com";
         dtSheet1.Rows.Add(dr);

        Hashtable htOneType = new Hashtable();

        htOneType["dataRows"] = dtSheet1;
        htOneType["ColName"] = arColName;
        htOneType["sheetName"] = "网站实用大全1";
        alData.Add(htOneType);
        //sheet2数据准备

         dr = dtSheet1.NewRow();
        dr["title"] = "百度MP3";
        dr["url"] = "http://MP3.baidu.com";
        dtSheet1.Rows.Add(dr);
        dr = dtSheet1.NewRow();
        dr["title"] = "400电话搜索";
        dr["url"] = "http://blog.my400800.cn";
        dtSheet1.Rows.Add(dr);
        dr = dtSheet1.NewRow();
        dr["title"] = "goole地图";
        dr["url"] = "http://map.google.cn";
        dtSheet1.Rows.Add(dr);
        dr = dtSheet1.NewRow();
        dr["title"] = "sina Blog";
        dr["url"] = "http://blog.sina.com.cn";
        dtSheet1.Rows.Add(dr);
        dr = dtSheet1.NewRow();
        dr["title"] = "tel4006 搜索";
        dr["url"] = "http://www.tel4006.com/400";
        dtSheet1.Rows.Add(dr);
        dr = dtSheet1.NewRow();
        dr["title"] = "soso";
        dr["url"] = "http://www.soso.com";
        dtSheet1.Rows.Add(dr);
        dr = dtSheet1.NewRow();
        dr["title"] = "gougou";
        dr["url"] = "http://www.gougou.com";
        dtSheet1.Rows.Add(dr);

         htOneType = new Hashtable();

        htOneType["dataRows"] = dtSheet1;
        htOneType["ColName"] = arColName;
        htOneType["sheetName"] = "网站实用大全2";
        alData.Add(htOneType);






        Hashtable htAllData = new Hashtable();
        htAllData["sheetNameList"] = alData;
      

        htAllData["excelName"] =  "网站实用大全.xls";

        ExcelRW.ExcelSave(htAllData);

        Response.Redirect("Excel/" + htAllData["excelName"] as string);

    }
}
 
0
0
分享到:
评论

相关推荐

    C#将Excel中的Sheet进行合并

    本篇文章将深入探讨如何利用C#将Excel表格中的多个Sheet页进行合并,以便更好地理解和实现这一功能。 首先,我们需要了解的是,C#中用于处理Excel文件的常用库有:Microsoft.Office.Interop.Excel(需安装Office...

    c#导出excel支持多sheet导出,可自定义sheetName

    c#导出excel支持多sheet导出,可自定义sheetName,如有疑问请留言,或qq1574697828.c#导出excel支持多sheet导出,可自定义sheetName,如有疑问请留言。

    C# NPOI导出多个Sheet页的Excel

    C# 用NPOI导出多个sheet页的Excel,sheet页名称可以自定义

    C# Excel导入导出多sheet页

    本篇文章将深入探讨如何在C#中实现Excel的多sheet页导入与导出。 首先,我们来了解两个关键概念:`Microsoft.Office.Interop.Excel` 和 `Aspose.Cells`。`Microsoft.Office.Interop.Excel` 是.NET框架中的一个库,...

    C#读取Excel_sheet方法

    根据提供的文件信息,我们可以深入探讨如何使用C#来操作Excel文件,特别是如何将DataGridView中的数据导出到Excel中。此段代码提供了一个具体的示例,展示了如何创建一个新的Excel工作簿,并将DataGridView的数据...

    [二合一]C#读取和导出EXCEL类库(可操作多个SHEET)

    标题中的 "[二合一]C# 读取和导出 EXCEL 类库(可操作多个 SHEET)" 指的是一个 C# 开发的类库,它整合了读取和导出 Excel 文件的功能,并且能够方便地操作 Excel 文件中的多个工作表(Sheet)。这种类库在处理大量...

    c# 读取 excel sheet(工作簿) 名字

    本文将详细介绍如何使用C#语言读取Excel文件中的Sheet名称,并进一步解析如何利用这些名称来操作Excel数据。 #### 一、背景与需求分析 在开发应用程序时,特别是涉及数据导入导出功能的应用中,经常需要读取Excel...

    C# 生成Excel类

    本篇文章将深入探讨如何使用C#来生成Excel文件,重点在于利用XML格式实现,这样用户无需安装Excel即可查看生成的文件,同时也避免了依赖特定的DLL库。 首先,C#生成Excel文件的核心思想是利用XML Schema定义Excel...

    C# 生成Excel表格(非office)

    在标题"**C# 生成Excel表格(非office)**"中,提及的关键点是使用C#编程语言来创建Excel文件,而不依赖于Microsoft Office的安装。这通常涉及到第三方库的使用,例如NPOI,它是一个开源的.NET库,专门用于处理...

    C#导出Excel(DataTable生成Excel)

    在C#编程环境中,生成Excel文件是常见的任务,特别是在数据处理和报告生成方面。Aspose.Cells是一个强大的库,专门用于处理Microsoft Excel文件,无需依赖Microsoft Office。本篇将详细介绍如何使用C#结合Aspose....

    C# 生成多张Excel表

    在C#编程环境中,生成多张Excel表格是一项常见的任务,特别是在数据处理、报告生成或数据分析等领域。本示例是基于C# 2010编写的,它利用了.NET Framework中的Microsoft.Office.Interop.Excel库,这是一个允许C#代码...

    C# 生成Excel 动态列 创建下拉框 单元格样式定义

    本主题涉及的是利用C#生成Excel表格,并且具备动态列、下拉框选择和单元格样式的功能,这对于数据管理和自动化报告非常实用。在描述中提到,程序能够根据输入的年月份自动生成当月的工作日考勤表,而且在Excel中还...

    如何用C#在Excel中生成图表C#源程序

    如何用C#在Excel中生成图表C#源程序 exc.Charts.Add(oMissing,oMissing,1,oMissing); exc.ActiveChart.ChartType=Excel.XlChartType.xlColumnClustered; exc.ActiveChart.SetSourceData(worksheet.get_...

    C# 创建Excel 加Excel下拉框列,并且给下拉框动态赋值

    在本文中,我们将深入探讨如何使用C#编程语言来创建Excel文件,并且为其中的某一列设置下拉框,同时实现下拉框的动态赋值。这个过程涉及到Microsoft Office Interop库的应用,以及对Excel对象模型的理解。让我们一...

    winform 向现有的excel中根据DataTable添加sheet,并读取出所有sheet的名称

    本文将详细介绍如何使用C# WinForm结合DataTable来操作Excel,包括向现有的Excel文件中添加新的sheet,并读取出所有sheet的名称。 首先,我们需要引用Microsoft.Office.Interop.Excel库,这个库允许我们与Excel对象...

    C#生成word和excel

    ### C#生成Word和Excel知识点解析 #### 一、引言 在软件开发过程中,经常需要将数据导出为常见的办公格式,如Word或Excel,以便于用户进行查看或者进一步处理。C#作为一种广泛使用的编程语言,提供了丰富的库支持来...

    C#让Excel中数据自动生成图表

    本主题聚焦于如何利用C#与Microsoft Office Interop库来创建Excel电子表格并自动生成图表。以下是对这个技术的详细解释: 首先,我们需要在Visual Studio 2010环境中设置项目。创建一个新的C# Windows Forms应用...

    C# DataTable生成excel并将excel添加附件发送邮件

    在C#编程中,生成Excel文件并将其作为附件发送邮件是一项常见的任务,特别是在需要定期报告或数据分享的场景中。以下是对这个主题的详细讲解。 首先,我们需要了解`DataTable`。`DataTable`是.NET框架中的一个类,...

    c#生成excel图表.doc

    在C#编程中,生成Excel图表是一项常见的任务,特别是在数据可视化和报告生成的场景下。以下是如何使用C#创建Excel图表的详细步骤和关键知识点: 首先,你需要引用Microsoft.Office.Interop.Excel库,它允许你的C#...

    C# 操作Excel写数据生成图表

    C#的,winform的,这是我自己写的一个c#操作excel的例子,其中包括数据操作,字体,格式,单元格等操作,还有一个生成柱状图的方法,所有的方法都在ExcelHelper.cs类里,点击Form1窗体里的按钮可以看到各种操作的...

Global site tag (gtag.js) - Google Analytics