`
gabrielyang
  • 浏览: 16572 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C# 写Excel 代码

    博客分类:
  • c#
阅读更多
C# 中使用 Excel 

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
using ExcelApplication = Microsoft.Office.Interop.Excel.ApplicationClass;

namespace ExcalDemo
...{
public class ExcelFiles
    ...{
   public void CreateExcelFiles()
        ...{
            //创建一个 Excel 实例
             ExcelApplication excel = new ExcelApplication();
            try
            ...{
                // 注释掉的语句是:从磁盘指定位置打开一个 Excel 文件
                //excel.Workbooks.Open("demo.xls", Missing.Value, Missing.Value, 
        //Missing.Value,Missing.Value, Missing.Value, Missing.Value, 
        //Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
        //Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                
                 excel.Visible = false;// 不显示 Excel 文件,如果为 true 则显示 Excel 文件
                 excel.Workbooks.Add(Missing.Value);// 添加工作簿
                 Worksheet sheet = (Worksheet)excel.ActiveSheet;// 获取当前工作表

                 Range range = null;// 创建一个空的单元格对象
                 sheet.get_Range(sheet.Cells[29,2],sheet.Cells[29,2]).Orientation=Excel.XlOrientation.xlVertical;//字体竖直居中在单元格内

                 range = sheet.get_Range("A1", Missing.Value);// 获取单个单元格
                 range.RowHeight = 20;           // 设置行高
                 range.ColumnWidth = 20;         // 设置列宽
                 range.Borders.LineStyle = 1;    // 设置单元格边框
                 range.Font.Bold = true;         // 加粗字体
                 range.Font.Size = 20;           // 设置字体大小
                 range.Font.ColorIndex = 5;      // 设置字体颜色
                 range.Interior.ColorIndex = 6;  // 设置单元格背景色
                 range.HorizontalAlignment = XlHAlign.xlHAlignCenter;// 设置单元格水平居中
                 range.VerticalAlignment = XlVAlign.xlVAlignCenter;// 设置单元格垂直居中
                 range.Value2 = "设置行高和列宽";// 设置单元格的值


                 range = sheet.get_Range("B2", "D4");// 获取多个单元格
                 range.Merge(Missing.Value);         // 合并单元格
                 range.Columns.AutoFit();            // 设置列宽为自动适应
                 range.NumberFormatLocal = "#,##0.00";// 设置单元格格式为货币格式
        // 设置单元格左边框加粗
                 range.Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;
        // 设置单元格右边框加粗
                 range.Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;
                 range.Value2 = "合并单元格";

                // 页面设置
                 sheet.PageSetup.PaperSize = XlPaperSize.xlPaperA4;          // 设置页面大小为A4
                 sheet.PageSetup.Orientation = XlPageOrientation.xlPortrait; // 设置垂直版面
                 sheet.PageSetup.HeaderMargin = 0.0;                         // 设置页眉边距
                 sheet.PageSetup.FooterMargin = 0.0;                         // 设置页脚边距
                 sheet.PageSetup.LeftMargin = excel.InchesToPoints(0.354330708661417); // 设置左边距
                 sheet.PageSetup.RightMargin = excel.InchesToPoints(0.354330708661417);// 设置右边距
                 sheet.PageSetup.TopMargin = excel.InchesToPoints(0.393700787401575);  // 设置上边距
                 sheet.PageSetup.BottomMargin = excel.InchesToPoints(0.393700787401575);// 设置下边距
                 sheet.PageSetup.CenterHorizontally = true;                  // 设置水平居中

                // 打印文件
                 sheet.PrintOut(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                
                // 保存文件到程序运行目录下
                 sheet.SaveAs(System.Windows.Forms.Application.StartupPath + "\demo.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

                 excel.ActiveWorkbook.Close(false, null, null); // 关闭 Excel 文件且不保存
             }
            catch (Exception ex)
            ...{
                 MessageBox.Show(ex.Message);
             }
            finally
            ...{
                 excel.Quit(); // 退出 Excel
                 excel = null; // 将 Excel 实例设置为空
                // 即便是这样, 有时在系统任务管理器中仍能看到一个 Excel 进程, 但有时也看不到
                // 据非权威人事说,这是 Office 2003 的 Bug. 这个问题有待与考证.
             }
         }
     }
}
            catch (Exception ex)
            ...{
                 MessageBox.Show(ex.Message);
             }
            finally
            ...{
                 excel.Quit(); // 退出 Excel
                 excel = null; // 将 Excel 实例设置为空
                // 即便是这样, 有时在系统任务管理器中仍能看到一个 Excel 进程, 但有时也看不到
                // 据非权威人事说,这是 Office 2003 的 Bug. 这个问题有待与考证.
             }
         }
     }
}


                 range = sheet.get_Range("B2", "D4");// 获取多个单元格
                 range.Merge(Missing.Value);         // 合并单元格
                 range.Columns.AutoFit();            // 设置列宽为自动适应
                 range.NumberFormatLocal = "#,##0.00";// 设置单元格格式为货币格式
        // 设置单元格左边框加粗
                 range.Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;
        // 设置单元格右边框加粗
                 range.Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;
                 range.Value2 = "合并单元格";

                // 页面设置
                 sheet.PageSetup.PaperSize = XlPaperSize.xlPaperA4;          // 设置页面大小为A4
                 sheet.PageSetup.Orientation = XlPageOrientation.xlPortrait; // 设置垂直版面
                 sheet.PageSetup.HeaderMargin = 0.0;                         // 设置页眉边距
                 sheet.PageSetup.FooterMargin = 0.0;                         // 设置页脚边距
                 sheet.PageSetup.LeftMargin = excel.InchesToPoints(0.354330708661417); // 设置左边距
                 sheet.PageSetup.RightMargin = excel.InchesToPoints(0.354330708661417);// 设置右边距
                 sheet.PageSetup.TopMargin = excel.InchesToPoints(0.393700787401575);  // 设置上边距
                 sheet.PageSetup.BottomMargin = excel.InchesToPoints(0.393700787401575);// 设置下边距
                 sheet.PageSetup.CenterHorizontally = true;                  // 设置水平居中

                // 打印文件
                 sheet.PrintOut(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                
                // 保存文件到程序运行目录下
                 sheet.SaveAs(System.Windows.Forms.Application.StartupPath + "\demo.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

                 excel.ActiveWorkbook.Close(false, null, null); // 关闭 Excel 文件且不保存
             }





运行环境: Microsoft Office Excel 2003 + Microsoft Visual Studio 2005

1. 为项目添加 COM 组件的引用
方法如下:
项目 -> 添加引用 -> com -> Microsoft Excel Object 11.0 Object Library -> 确定
此时项目里会增加 3 个引用, 分别是: Excel、Microsoft.Office.Core、VBIDE

2. 在类文件里添加如下命名空间的引用
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;

using ExcelApplication = Microsoft.Office.Interop.Excel.ApplicationClass; //为了与 System.Windows.Forms 命名空间下的 Application 类有所区分, 纯属方便代码的编写.

注: 最好不要用在窗体类中使用. 因为,当引入 Microsoft.Office.Interop.Excel 命名空间后, Microsoft.Office.Interop.Excel 命名空间下的 Application 接口会同 System.Windows.Forms 命名空间下的 Application 类产生二义性冲突. 要使用 Application 类, 就必须在 Application 前面添加完整的命名空间名.

经过以上 2 步的操作就可以使用 Excel 了. 但是, 关于 Excel 的 MSDN 很少, 多数都是 English 的. 这样对使用 Excel 带来了不便. 想调整单元格的大小都十分困难. 这里我告诉大家一个简单实用的笨方法. 那就是: 打开你的 Excel, 录制宏. 然后根据生成的 VB 代码, 去到 MSDN 里查相关 C# 的帮助.
分享到:
评论
1 楼 amyasp 2011-02-16  
这个最终的excel关闭值得讨论,在有些情况下,excel会一直在进程里,当多次调用后,服务器excel当掉
我现在的解决办法是,查找所有的进程,关掉所有的excel,副作用是服务器不能使用excel。

相关推荐

    c# 读写 Excel 代码

    在C#编程中,处理Excel文件是常见的任务,特别是在数据导入导出、报表生成和数据分析等领域。本示例主要关注如何使用C#进行Excel的读写操作。在提供的压缩包"PrintGiftVolume.rar"中,可能包含了一个或多个示例项目...

    用c#写excel源代码

    This article will help to write data to Excel using C# without playing with Excel.Application. With the help of the ExcelFileWriter class, it is very easy to write data to an Excel sheet.

    C#读写Excel和Word文件

    本主题聚焦于利用C#进行Excel和Word文件的读写操作,这对于数据分析、报告生成以及信息处理等任务至关重要。以下是关于这些知识点的详细说明: ### 1. C#读写Excel文件 读取Excel文件主要依赖于Microsoft Office ...

    C#读写Excel文件

    在C#编程环境中,操作Excel文件是常见的任务,特别是在数据处理、报表生成或者用户界面交互的应用中。本知识点主要探讨如何使用C#读取和写入Excel 2010文件,以及涉及到的相关技术和库。 首先,C#本身并不直接支持...

    C#对EXCEL超级详细读写操作

    在C#编程中,处理Excel文件是常见的任务,特别是在数据导入导出、数据分析或报表生成等场景。本篇文章将深入探讨如何使用C#进行Excel的读写操作,并重点关注`Missing`参数的用法以及如何从`DataTable`和`DataSet`中...

    用C#读写Excel

    在.NET框架中,C#语言提供了丰富的库支持与Microsoft Excel进行交互,这使得开发者能够方便地读取、修改和创建Excel文件。本文将主要探讨如何使用C#来读写Excel,以及涉及的关键技术和核心对象。 首先,我们关注的...

    C# 导出excel代码

    此示例代码使用的是 `Microsoft.Office.Interop.Excel` 库,它允许 C# 应用程序与 Microsoft Excel 进行交互。 ### 代码解析 #### 1. 命名空间引入 ```csharp using System; using System.Collections.Generic; ...

    C#创建 读 写 Excel 在Excel中插入图片代码

    首先,你需要引入Microsoft.Office.Interop.Excel库,这个库提供了对Excel对象模型的访问,使我们能够用C#代码控制Excel应用程序。在Visual Studio中,你可以通过右键点击项目,选择“管理NuGet程序包”,然后搜索...

    C#导出Excel的代码

    ### C#导出Excel的代码知识点解析 #### 一、概述 在开发过程中,经常需要将数据导出到Excel文件中以便于用户查看或进一步处理。C# 提供了多种方式来实现这一功能,其中使用 ADO.NET 操作 Excel 文件是一种常见的...

    C# 导出excel 实例代码

    下面将详细探讨如何使用C#来实现Excel的导出,并提供相关的实例代码。 首先,要理解C#导出Excel的基本原理。通常,我们可以使用两种主要的方式来完成这个任务:一是使用Microsoft Office Interop组件,二是使用第三...

    ExcelReadShow_c#读写excel文件_

    一旦添加成功,我们就可以在代码中使用Excel对象模型来访问和操作Excel文件。 以下是一个简单的示例,演示如何使用C#读取和写入Excel文件: ```csharp using Excel = Microsoft.Office.Interop.Excel; // 创建...

    C#操作Excel源代码

    标题 "C#操作Excel源代码" 提供了一个关键信息,即使用C#编程语言来处理Microsoft Excel文件。在C#中,我们可以利用.NET框架提供的Microsoft.Office.Interop.Excel命名空间,这使得我们能够通过COM组件与Excel应用...

    c#读写EXcel数据

    ### C#中处理Excel数据的基本方法 #### 一、理解C#与Excel交互的基础概念 在C#中处理Excel文件通常涉及两种主要的方式:一种是利用COM自动化技术,通过Microsoft Office Interop组件直接操作Excel应用程序;另一种...

    c#代码读写excel数据demo

    本文将详细讲解如何使用C#代码来读取和写入Excel数据,并提供一个基本的示例。 首先,我们需要了解在C#中处理Excel数据的主要库。最常用的是Microsoft.Office.Interop.Excel,这是.NET Framework提供的一个COM组件...

    C#导出excel代码实例

    根据提供的文件信息,我们可以深入探讨如何使用C#语言来操作Excel文档,并且通过代码实现Excel文件的导出功能。此篇文章将重点介绍如何利用`Microsoft.Office.Interop.Excel`库来进行Excel文件的操作,包括打开、...

    C# 直接读取 excel工作簿数据代码

    下面将详细介绍如何使用C#直接读取Excel工作簿数据,基于提供的代码片段进行深入解析。 ### C#读取Excel工作簿数据方法详解 #### 方法定义及参数说明 首先,我们看到的方法名为`SelectDataSource`,它接受一个...

    C#读取EXCEL代码的几种方法

    C#读取EXCEL代码的几种方法 C#读取EXCEL代码的几种方法

    C# 读写 Excel

    本篇文章将深入探讨如何使用C#进行Excel的读写操作,这在数据分析、报表生成以及数据交换等场景中非常常见。我们将基于Visual Studio 2010这一开发环境进行讲解。 首先,要实现C#对Excel的读写,我们需要引入一个...

    C#读写Excel表格,行列互转并输出

    在C#编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、数据分析或报表生成等场景下。本文将详细讲解如何使用C#读取Excel表格,并进行行列互转,最后将转换后的数据输出到新的Excel文件中。我们将...

    C# 写的Excel导入mysql数据库

    本项目涉及的是利用C#将Excel数据导入到MySQL数据库中,这在数据分析、报表处理或者数据迁移等场景中非常常见。下面,我将详细讲解这个过程中的关键知识点。 1. **C#与.NET Framework**: C#是微软公司开发的一种...

Global site tag (gtag.js) - Google Analytics