用C#为Excel创建个人宏工作薄(原创)

简介:

以前一直是用C#直接操作Excel,但是发现性能无比低下,最近发现用Excel中的宏可以高速的完成批处理的功能,于是决定写一个用C#为Excel文件创建宏的程序,工程如下:

ExpandedBlockStart.gif
复制代码
using  System;
using  System.IO;
using  System.Runtime.InteropServices;
using  System.Reflection;
using  System.Text;


using  Office  =  Microsoft.Office.Core;
using  VBDE  =  Microsoft.Vbe.Interop;
using  Excel  =  Microsoft.Office.Interop.Excel;


namespace  ConsoleApplication1
{

class  Class1
{

[STAThread]
static   void  Main( string [] args)
{
string  MyFile  =  Path.GetFullPath( " . " +   @" \sample.xls " ;
CreateWorkbook(MyFile,GetMacro()); 
Console.WriteLine(
" File Saved to  "   +  MyFile);
Console.ReadLine();
}

#region  Get Macro
private   static   string  GetMacro()
{
StringBuilder sb 
=   new  StringBuilder();

sb.Append(
" Sub FormatSheet() "   +   " \n " );
sb.Append(
"  msgbox \ " http: // www.cnblogs.com/huangcong/\"\r\n");
sb.Append( " End Sub " );

return  sb.ToString();
}
#endregion

#region  Create Workbook
private   static   void  CreateWorkbook( string  FileName, string  Macro)
{

Excel.Application xl 
=   null ;
Excel._Workbook wb 
=   null ;
Excel._Worksheet sheet 
=   null ;
VBDE.VBComponent module 
=   null ;
bool  SaveChanges  =   false ;


try
{

if  (File.Exists(FileName)) { File.Delete(FileName); }

GC.Collect(); 

xl 
=   new  Excel.Application();
xl.Visible 
=   false ;

wb 
=  (Excel._Workbook)(xl.Workbooks.Add( Missing.Value ));
sheet 
=  (Excel._Worksheet)wb.ActiveSheet;

module 
=  wb.VBProject.VBComponents.Add(VBDE.vbext_ComponentType.vbext_ct_StdModule);
module.CodeModule.AddFromString(Macro);

xl.Visible 
=   false ;
xl.UserControl 
=   false ;
SaveChanges 
=   true ;

wb.SaveAs(FileName,Excel.XlFileFormat.xlWorkbookNormal,
null , null , false , false ,Excel.XlSaveAsAccessMode.xlShared,
false , false , null , null , null );

}
catch ( Exception theException ) 
{
String msg;
msg 
=   " Error:  " ;
msg 
=  String.Concat( msg, theException.Message );
msg 
=  String.Concat( msg,  "  Line:  "  );
msg 
=  String.Concat( msg, theException.Source ); 
Console.WriteLine(msg);
}
finally
{

try
{
xl.Visible 
=   false ;
xl.UserControl 
=   false ;
wb.Close(SaveChanges,
null , null );
xl.Workbooks.Close();
}
catch  { }

xl.Quit();

if  (module  !=   null ) { Marshal.ReleaseComObject (module); }
if  (sheet  != null ) { Marshal.ReleaseComObject (sheet); }
if  (wb  != null ) { Marshal.ReleaseComObject (wb); }
if  (xl  != null ) { Marshal.ReleaseComObject (xl); }

module 
=   null ;
sheet
= null ;
wb
= null ;
xl 
=   null ;
GC.Collect(); 
}

}
#endregion
}
}
复制代码

运行结果:

2010071113464734.jpg

打开添加了宏的Excel文件,找到刚才创建好的宏:

2010071113471910.jpg

运行查看效果:

2010071113475459.jpg

工程下载: 创建宏.rar

 

出处:http://www.cnblogs.com/huangcong/archive/2010/07/11/1775193.html 

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。




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

相关文章
|
9月前
|
前端开发 C#
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
|
22天前
|
存储 SQL C#
C#实现Excel合并单元格数据导入数据集
C#实现Excel合并单元格数据导入数据集
|
8月前
|
C#
45【软件技术基础】C#调用NPOI插件对EXCEL进行处理
NPOI插件进行EXCEL表格处理,不依赖第三方软件,功能强大,使用简便。 C#调用NPOI插件进行EXCEL单个表和文件夹中批量表的处理。
139 1
|
4月前
|
XML JSON 数据处理
C# | 导出DataGridView中的数据到Excel、CSV、TXT
从DataGridView中导出数据到Excel、CSV、TXT是开发中非常常见的一种需求。本文将讲解如何高效的完成对这三种格式的单向导出。 倘若直接写三种格式的导出必定会产生大量的重复代码,而从表中获取结构化数据的思路是基本一致的,因此有一个思路是先将DataGridView中的数据转换为DataTable对象,再进一步导出成我们的目标格式。 本文将介绍如何将DataGridView中的数据转换为DataTable格式,并提供将DataTable转换为Excel、CSV、TXT三种格式的例子。
87 0
C# | 导出DataGridView中的数据到Excel、CSV、TXT
|
5月前
|
XML JSON 开发框架
盘点5个C#实用的Word、PPT、Excel、Mail第三方库
盘点5个C#实用的Word、PPT、Excel、Mail第三方库
79 0
|
6月前
|
C#
C#写入模板excel数据
C#写入模板excel数据
26 0
|
9月前
|
数据库 C#
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
207 0
|
10月前
|
C#
C#导出到Excel——无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口。
C#导出到Excel——无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口。
154 0
|
JSON 程序员 C#
一个基于C#开发的Excel转Json工具
一个基于C#开发的Excel转Json工具,比通过Office Excel组件访问数据性能提升100倍,支持界面、命令模式。
202 0
一个基于C#开发的Excel转Json工具