Xin giúp đỡ về tạo hàm excel với C# và excel-dna (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

hdcv.excel

Thành viên mới
Tham gia
15/8/25
Bài viết
3
Được thích
0
Chào mn, em mới sử dụng C#, và đang muốn viết 1 hàm cho excel sử dụng C#
Tuy nhiên có một vấn đề là em muốn tham số truyền vào sẽ dynamic. VD: Hàm JOIN_DATA() : JOIN_DATA(1,2,3) => "1,2,3"
User có thể nhập vào hàm các trường hợp:
- Dãy ô liên tiếp (Range)
- Nhiều ô riêng lẻ: (A1, A2, B2)
- Kết hợp nhiều vùng và ô: (A1:A5, C1, D4:D8, F2)
- Truyền giá trị trực tiếp: (1, 3, 5)
- Kết hợp giá trị trực tiếp và tham chiếu ô/vùng : (A1:A3, 10, B5, 7)

Em đã thử để public static object JOIN_DATA(params object[] args) nhưng có vẻ nó sẽ không nhận được range, hoặc gọi hàm bằng JOIN_DATA(1,2,3) sẽ không trả ra value,
Nó chỉ nhận cho 1 range 1 chiều, hoặc JOIN_DATA({1,2,3}) => "1,2,3"
có giải pháp hay thư viện nào hỗ trợ vấn đề này không, nhờ mn chỉ giúp e với ạ.
Tks mn
 
Chào mn, em mới sử dụng C#, và đang muốn viết 1 hàm cho excel sử dụng C#
Tuy nhiên có một vấn đề là em muốn tham số truyền vào sẽ dynamic. VD: Hàm JOIN_DATA() : JOIN_DATA(1,2,3) => "1,2,3"
User có thể nhập vào hàm các trường hợp:
- Dãy ô liên tiếp (Range)
- Nhiều ô riêng lẻ: (A1, A2, B2)
- Kết hợp nhiều vùng và ô: (A1:A5, C1, D4:D8, F2)
- Truyền giá trị trực tiếp: (1, 3, 5)
- Kết hợp giá trị trực tiếp và tham chiếu ô/vùng : (A1:A3, 10, B5, 7)

Em đã thử để public static object JOIN_DATA(params object[] args) nhưng có vẻ nó sẽ không nhận được range, hoặc gọi hàm bằng JOIN_DATA(1,2,3) sẽ không trả ra value,
Nó chỉ nhận cho 1 range 1 chiều, hoặc JOIN_DATA({1,2,3}) => "1,2,3"
có giải pháp hay thư viện nào hỗ trợ vấn đề này không, nhờ mn chỉ giúp e với ạ.
Tks mn
Excel dna thì có đấy bạn

1755483069504.png
 
Upvote 0
[ExcelFunction]
public static string StringArray(string[] s)
{
return "StringArray VALS: " + string.Concat(s);
}

Sample trên doc thì nó ghi như thế này nhưng khi start lên thì báo lỗi
Initialization [Error] Method not registered - unsupported signature, abstract or generic: ...

Có vẻ nó không cho phép để string[] s mà phải thay bằng object[] s
Nhưng khi để sang object[] s
Thì gọi hàmg =StringArray("b","a") => sẽ không vào hàm, phải gọi =StringArray({"b","a"}) ạ @@
 
Upvote 0
[ExcelFunction(Name = "Ta_ParamArray", Description = "Mảng Tham số", Category = "Ta_Function")]
public static object[] Ta_ParamArray([ExcelArgument("Mảng Tham số")] params object[] args)
{
return args;
}
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom