aardio 兩行程式碼 呼叫 libxl 讀寫 excel

超级太阳發表於2024-04-20

廢話不多說, 直接給連線
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# 文件愉快的進行開發了.

相關文章