C# 写Excel 代码

简介:

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(falsenullnull); // 关闭 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(falsenullnull); // 关闭 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# 的帮助.




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2010/07/11/1775140.html如需转载请自行联系原作者

相关文章
|
2月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
106 2
|
3月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
2月前
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
81 2
Excel中用宏VBA实现GBT 4761-2008 家庭关系代码转换
Excel中用宏VBA实现GBT 4761-2008 家庭关系代码转换
|
2月前
|
中间件 数据库连接 API
C#数据分表核心代码
C#数据分表核心代码
40 0
|
2月前
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
42 0
|
4月前
|
物联网 C# Windows
看看如何使用 C# 代码让 MQTT 进行完美通信
看看如何使用 C# 代码让 MQTT 进行完美通信
602 0
|
4月前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
251 0
|
4月前
|
数据安全/隐私保护 C# UED
利用 Xamarin 开展企业级移动应用开发:从用户登录到客户管理,全面演示C#与Xamarin.Forms构建跨平台CRM应用的实战技巧与代码示例
【8月更文挑战第31天】利用 Xamarin 进行企业级移动应用开发能显著提升效率并确保高质量和高性能。Xamarin 的跨平台特性使得开发者可以通过单一的 C# 代码库构建 iOS、Android 和 Windows 应用,帮助企业快速推出产品并保持一致的用户体验。本文通过一个简单的 CRM 示例应用演示 Xamarin 的使用方法,并提供了具体的代码示例。该应用包括用户登录、客户列表显示和添加新客户等功能。此外,还介绍了如何增强应用的安全性、数据持久化、性能优化及可扩展性,从而构建出功能全面且体验良好的移动应用。
52 0
|
4月前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
105 0