返回顶部

aardio 两行代码 调用 libxl 读写 excel

废话不多说, 直接给连接
https://files.cnblogs.com/files/blogs/762462/libxl.7z?t=1713539927&download=true
运行效果:
image
文件存放路径:
image
再上代码

import dotNet
import console

xl = dotNet.load("libxl.net", "libxl.net.dll");
xl.import("libxl");

// aardio 的代码
try
{
    var book = libxl.BinBook(); // use XmlBook() for xlsx
    var sheet = book.addSheet("Sheet1");
    sheet.writeStr(2, 1, "Hello, World !");
    sheet.writeNum(3, 1, 1000);
    book.save("example.xls");
}
catch (e)
{
    console.print(e)
}

console.pause()

这里跟官网贴出的c#代码对比一下

class Program
{
    // 官网的 C# 代码
    static void Main(string[] args)
    {
        try
        {
            Book book = new BinBook(); // use XmlBook() for xlsx
            Sheet sheet = book.addSheet("Sheet1");
            sheet.writeStr(2, 1, "Hello, World !");
            sheet.writeNum(3, 1, 1000);
            book.save("example.xls");
        }
        catch (System.Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
}

原本想用 libxl 读写 excel 文件, 就打算用 aardio 调用 C语言 dll 的方式运行
结果让搞的焦头烂额, 突然发现 libxl 本身就有 C# 的调用库, 直接导入, 瞬间感觉世界清静.
想打包独立文件直接用 aardio 自带工具即可.
这里再给出一个示例:

import dotNet
import console

xl = dotNet.load("libxl.net", "libxl.net.dll");
xl.import("libxl");

var book = libxl.BinBook();

var font = book.addFont();
font.size = 36;

var format = book.addFormat();
format.alignH = libxl.AlignH.ALIGNH_CENTER;
format.setBorder(libxl.BorderStyle.BORDERSTYLE_MEDIUMDASHDOTDOT);
format.setBorderColor(libxl.Color.COLOR_RED);
format.font = font;

var sheet = book.addSheet("Sheet1");
sheet.writeStr(2, 1, "Format", format);
sheet.setCol(1, 1, 25);

book.save("format.xls");

console.pause()

image
可以看到, 转换规则就是类型名全部替换为 var , 然后设置的属性值添加 libxl 前缀即可.
如果碰到 ref 引用, 像下面这样调用即可

image

import dotNet
import console

xl = dotNet.load("libxl.net", "libxl.net.dll");
xl.import("libxl");

try 
{
    var book = libxl.BinBook();
    var year  = dotNet.int(0, true)
    var month = dotNet.int(0, true)
    var day   = dotNet.int(0, true)
    // public bool dateUnpack(double value, ref int year, ref int month, ref int day)
    book.dateUnpack(43210.0, year, month, day)
    console.print(year, month, day)
}
catch (e)
{
    console.print(e)
}

console.pause()

于是, 可以参照官方的 C# 文档愉快的进行开发了.

posted @ 2024-04-20 00:42  超级太阳  阅读(168)  评论(0编辑  收藏  举报