`

C# API: 生成和读取Excel文件

阅读更多

们想为用户提供一些数据,考虑再三, 大家认为对于用户(人,而非机器)的可读性, Excel文件要好一些.

因为相比csv,xml等文件, Excel中我们可以运用自动筛选, 窗口锁定, 还可以控制背景颜色, 前景颜色, 字体, 网格等等...

业务逻辑并不复杂, 文件的内容和格式也比较固定,所以大家决定直接拿C#去创建这些文件.

 

于是一搜索,首先来到了这个链接:C# Excel Tutorial

里面包含了下面这些主题的代码示例, 示例很详细, 编译可直接运行.

 

为了理解上面这些代码需要理解一下Excel的对象模型, 可以参考msdn的下面这个链接

Excel Object Model Overview

 

里面介绍了4个核心对象:

前三个对象比较好理解, 关键在于第四个对象:Range.

起初我以为更改一些单元格的字体颜色格式等等的, 是需要通过Cell这个对象来做.

看完了之后才发现, 这些操作其实都是通过Range来完成的.

还包括和并单元格, 设置网格线等等, 甚至读取和设置一个单元格的值,都可以通过Range来完成,

所以基本上当我们操作excel的时候, 我们最经常的就是和Range对象打交道, 而很少使用Cell等对象.

如果有什么需求不知道怎么实现,

建议可以先到Range对象里面翻一翻, 看看msdn上Range对象的Members,Methods,Properties的相关文档.

 

还有一点要补充的是:

不仅仅是C#, 还包括其他语言的Excel API, 都是对Excel对象模型的直接模拟和包装.不过Java,Ruby等等.

也就是说, 其他语言的Excel API也都会有上面那四个主要对象, 而且也都会以近乎相同的方式, 干着差不多的事儿.

 

 

接下来想写一写关于Missing.Value的事儿

对于前面给出的,创建Excel表的例子的代码, 转载如下:

这段代码中,很多函数调用都传递了这个参数:

object misValue = System.Reflection.Missing.Value;

他的详细介绍参考这个链接Missing Class 上面的例子,

简单的说就是:

当我想以一些参数的默认值来调用一些dll中的方法的, 我们在方法调用中忽略掉这些参数也不对,

我们用null传递给这些参数还不对,

这时我们便可以给这些参数赋值以Missing.Value来告诉运行时环境, 用这个参数的默认值帮我运行吧.

 

对于这段代码还有一个需要注意的问题:

注意Application,Workbook,Worksheet这三个对象的清理工作

该保存的保存, 该close的close, 该quit的quit, 最后, 他们还都应该被release

 

using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel; 

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Excel.Application xlApp ;
            Excel.Workbook xlWorkBook ;
            Excel.Worksheet xlWorkSheet ;
            object misValue = System.Reflection.Missing.Value;

            xlApp = new Excel.ApplicationClass();
            xlWorkBook = xlApp.Workbooks.Add(misValue);

            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";

            xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();

            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);

            MessageBox.Show("Excel file created , you can find the file c:\\csharp-Excel.xls");
        }

        private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        }
    }
}
 

 

 

最后想写一下关于如何设置字体的颜色, 以及单元格的背景颜色的事儿.

以背景色设置为红色为例, 首先我们可以写出形如下面这样的代码:

 

Excel.Range chartRange;
chartRange = xlWorkSheet.get_Range("a1", "e4");
chartRange.Interior.Color = 255;

 

但是这个255很不好记, 比如青色对应的数字是16777164, 这个就更加不好理解.

所以我们可以改为这样设置颜色, 使用ColorTranslator转换一下:

chartRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
 

最后还有一种设置方法是不对Color进行设置, 而是设置相应的ColorIndex, 形如下面这样:

chartRange.Interior.ColorIndex = 3;
 

ColorIndex的色表参考下面这两个连接:

Color Palette and the 56 Excel ColorIndex Colors

Excel Color Palette and Color Index change using VBA

第一个连接特别详细,

第二个连接则介绍了如何使用VBA在Excel文件中生成这些色表, 同时还提供了一个xls格式的色表文件下载.

 

 

 

 

分享到:
评论

相关推荐

    c#读取excel文件.rar

    本示例“c#读取excel文件.rar”提供了一个解决方案,它着重解决了如何在C#应用中读取Excel文件的问题。下面将详细介绍相关的知识点。 首先,要读取Excel文件,你需要引入一个能与Excel接口的库。在.NET Framework中...

    C# 导入Excel文件到ListView和导出ListView到Excel文件

    首先,要导入Excel文件到ListView,我们需要使用一个能够读取Excel文件的库,如Microsoft Office Interop库或更轻量级的第三方库,如NPOI。对于本示例,我们假设使用NPOI,因为它无需安装Office,可以跨平台运行。 ...

    C# 读取XML文件并写入Excel表格

    综上所述,"C# 读取XML文件并写入Excel表格"这一主题涵盖了XML解析和Excel操作的关键技术,对于数据处理和报告生成等场景非常实用。在实际应用中,开发者可以根据具体需求调整代码逻辑,以满足各种复杂的业务需求。

    c#利用EPPlus写入、读取、修改excel实例

    在.NET开发环境中,C#程序员经常需要处理Excel文件,用于数据导入导出、报表生成等任务。EPPlus是一个强大的开源库,专为处理Office Open XML(XLSX)格式的Excel文件而设计。本文将详细介绍如何使用EPPlus进行Excel...

    C#简单的读取EXCEL数据demo例子

    本示例将深入探讨如何使用C#来简单地读取Excel数据,这对于数据分析、报表生成或数据导入到数据库等场景非常实用。下面,我们将详细讲解这个过程。 首先,为了在C#中操作Excel文件,你需要引入一个库来处理Excel...

    C#任意读取excel

    当涉及到处理电子表格,如Microsoft Excel,C#提供了强大的库和API,使得开发者可以方便地读取、写入和操作Excel文件。标题"**C#任意读取excel**"暗示了我们将讨论如何使用C#语言来实现对Excel文件的灵活读取。 在...

    C#中读取Excel表格数据实例

    首先,C#本身并不内置读取Excel的API,因此我们需要借助第三方库来实现。一个常用的库是NPOI,这是一个Java的POI库的.NET版本,支持读写Microsoft Office文件格式,包括Excel(.xlsx和.xls)。要使用NPOI,你需要先...

    C#winform读取Excel并导入数据库

    在本文中,我们将深入探讨如何使用C# Winform应用程序来读取Excel文件并将其数据导入到数据库中。这个过程涉及到几个关键步骤,包括文件操作、数据解析以及与数据库的交互。 首先,C#是Microsoft开发的一种面向对象...

    C# datagridview 读取和导出EXCEL

    本话题主要关注如何使用C#操作Excel文件,包括读取数据和导出数据到Excel,这对于数据分析、报告生成以及数据交换等场景非常实用。 首先,读取Excel数据通常需要借助第三方库,因为.NET框架的标准库并不直接支持...

    NPOI 插件在 Unity C#中生成 Excel文件

    在Unity游戏开发环境中,C#是主要的编程语言,NPOI插件的引入使得开发者可以在游戏中或者相关应用中生成和操作Excel文件,这在数据管理、报告生成或者用户数据导出等场景下非常有用。 首先,要理解如何在Unity中...

    C#操作EXCEL文件

    本篇文章将详细探讨C#如何操作Excel文件,包括读取Excel内容和向Excel中写入内容。 首先,我们需要一个库来与Excel交互。Microsoft提供了两个主要的选择:`Microsoft.Office.Interop.Excel`(也称为COM Interop)和...

    NExcel 读取excel文件类

    NExcel 是一个专门为 .NET 开发的开源库,用于读取和写入 Excel 文件。它为.NET 开发人员提供了一种高效且灵活的方式来处理 Excel 数据,而无需依赖 Microsoft Office 或安装其他大型组件。NExcel 支持多种 Excel ...

    c#读取Excel类库

    ClosedXML是另一个流行的C# Excel处理库,它提供了简单易用的API来创建、读取和编辑Excel 2007及更高版本的XLSX文件。ClosedXML特别适合用于生成报表,因为它支持复杂的样式、条件格式化和表格操作。 5. **Aspose....

    C#读取Excel源代码

    总结来说,C#读取Excel文件的关键在于选择合适的库,如NPOI,然后利用库提供的API来访问和操作Excel数据。在实际应用中,你可能需要根据项目需求进行数据处理、异常处理以及性能优化。通过不断的实践和学习,你将...

    c#基于EPPlus导出生成Excel,DEMO,完整代码

    EPPlus是一个强大的C#库,专门用于处理Excel文件,尤其是xlsx格式,它支持读取、写入和操作Excel数据,而无需依赖Microsoft Office组件。这个DEMO是基于EPPlus实现Excel文件生成的实例,适用于Visual Studio 2010。 ...

    C# 生成excel表

    2. **多线程处理**:利用C#的`Task`或`ThreadPool`实现多线程,将数据读取和Excel生成过程分离,提高程序响应速度。比如,可以先在一个单独的线程中读取数据库,同时用户界面仍保持响应,然后在另一个线程中生成...

    c# 无需安装word excel就可以读取和生成word excel等文档

    在C#编程环境中,开发人员经常需要处理与Word和Excel文档相关的任务,如读取、创建和编辑这些文件。然而,通常情况下,这需要在用户的计算机上安装完整的Microsoft Office套件,包括Word和Excel。标题提到的技术允许...

    C#实现EXCEL文件读取.doc

    ### C#实现EXCEL文件读取的关键知识点 #### 一、理解Excel对象模型 在C#中处理Excel文件时,通常需要了解Excel的对象模型。这包括了多种对象,从简单的图形对象到复杂的透视表和图表。 1. **Application对象**: ...

    NOPI复杂Excel生成和读取操作,带各种例子代码

    它允许程序员在.NET环境中创建、修改和读取Excel文件,而无需安装Microsoft Office。本篇将深入探讨NPOI在处理复杂Excel操作时的应用,以及通过实例代码进行讲解。 1. **NPOI.DLL的介绍** NPOI.DLL是NPOI项目的...

    C#读写Excel文件

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

Global site tag (gtag.js) - Google Analytics