|
|
程序目的:需要在无excel2007软件的环境中生成xlsx文件并写入数据
调用DLL:EPPlus.dll(一款C#下的excel2007格式支持库)
以下是根据范例中 实时编译C#源码的 内容进行修改的
- //运行时编译C#
- //运行时编译C#
- import console;
- console.open()
- import dotNet;
- var clr = dotNet.clr( "v4.0","v2.0" );
- if( !clr ){
- console.log("当前系统未安装.Net Framework 2.0 以上版本")
- console.pause();
- return;
- }
- //创建应用程序域
- var appDomain = clr.createAppDomain();
- //创建C#语言编译器
- var compile = appDomain.createCompiler("C#");
- compile.Reference("System.dll")
- compile.Reference("/res/EPPlus.dll")
- //设置待编译C#源码
- compile.Source = /******
- using System;
- using System.IO;
- using System.Reflection;
- using OfficeOpenXml; // namespace for the ExcelPackage assembly
- namespace CSharpLibrary
- {
- public class AardioTable
- {
- private object tObject;
- public AardioTable(object obj){
- tObject = obj;
- }
- public object GetProperty(string k){
- return tObject.GetType().InvokeMember(k, BindingFlags.GetProperty, null, tObject, null);
- }
- public void SetProperty(string k,object v){
- tObject.GetType().InvokeMember(k, BindingFlags.SetProperty, null, tObject, new object[] { v });
- }
- public object InvokeMember(string k,params/*不定个数参数*/ object[] arg ){
- return tObject.GetType().InvokeMember(k, BindingFlags.InvokeMethod, null, tObject, arg );
- }
- }
- public class CSharpObject
- {
- public string create(){
- FileInfo newFile = new FileInfo(@"d:\sample2.xlsx");
- ExcelPackage pck = new ExcelPackage(newFile);
- var ws = pck.Workbook.Worksheets.Add("Content");
- pck.Save();
- return "ok";
- }
- public string test(){
- return "hello";
- }
- }
- }
- ******/
- //编译并返回程序集
- var assembly = compile.Compile()
- console.log(compile.getLastError())
- console.pause()
- //调用程序集创建类对象
- var cSharpObject = assembly.createInstance("CSharpLibrary.CSharpObject")
- //调用实时编译的C#函数
- console.log(cSharpObject.create());
- console.log(cSharpObject.test());
- console.pause()
复制代码
上述代码在aardio中编译成功,但是调用create()时aardio提示异常、调用test()能够获取字符串hello:

下面为在C#中的代码,测试无问题
- using System;
- using System.IO;
- using System.Windows.Forms;
- using OfficeOpenXml;
- using System.Reflection;
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- test();
- }
- private void test() {
- FileInfo newFile = new FileInfo(@"d:\sample1.xlsx");
- ExcelPackage pck = new ExcelPackage(newFile);
- //Add the Content sheet
- var ws = pck.Workbook.Worksheets.Add("Content");
- pck.Save();
- }
- }
- }
复制代码
多番搜索,这方面的资料确实太少,所以只能来论坛请教,谢谢!
|
|