调用C# GemBox读写Excel表格
By
jerryxjr1220
at 2022-06-22 • 1人收藏 • 1582人看过

GemBox.Spreadsheet 是一个 .NET 组件,它使您能够使用一个简单的 API 从 .NET 应用程序中读取、写入、编辑、转换和打印电子表格文件。
使用 GemBox.Spreadsheet,您可以获得一个快速可靠且易于使用的组件。它只需要 .NET,因此您可以轻松部署您的应用程序,而无需考虑其他许可证。它比 Microsoft Excel 自动化快 250 倍!
官方网址: https://www.gemboxsoftware.com/spreadsheet
import dotNet;
dotNet.reference({
"GemBox.Spreadsheet" = $"\res\GemBox.Spreadsheet.dll";
"BouncyCastle.Crypto" = $"\res\BouncyCastle.Crypto.dll";
});
Spreadsheet = dotNet.import("GemBox.Spreadsheet");
Spreadsheet.SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
//新建Excel
wb = Spreadsheet.ExcelFile();
//新增worksheet
ws = wb.Worksheets.Add("Sheet 1");
//读取Excel
//wb = Spreadsheet.ExcelFile.Load(file);
//按Cell名称读写值
ws.Cells.Item["A1"].Value = 123;
//按Cell行列读写公式,行列从0开始计数
ws.Rows.Item[1].Cells.Item[2].Formula = "= A1";
//保存
wb.Save(io.fullpath("\123.xlsx"));
调用还是挺方便的,暂时用免费版也没法发现什么限制。
要是买了License可以更改上面的值变成正式版。
测试文件下载:
GemBox也可以直接在Nuget上下载。
6 个回复 | 最后更新于 2022-08-21
2022-08-20
#4
@admin 如何把如何把 sheet 嵌入到 form里面
import dotNet;
import win.ui;
import console;
/*DSG{{*/
mainForm = win.form(text="测试2";right=1089;bottom=554)
mainForm.add(
custom={cls="custom";text="自定义控件";left=364;top=8;right=1074;
bottom=538;bgcolor=12639424;db=1;dl=1;dr=1;dt=1;z=1};
)
/*}}*/
dotNet.reference({
"GemBox.Spreadsheet" = $"\res\GemBox.Spreadsheet.dll";
"BouncyCastle.Crypto" = $"\res\BouncyCastle.Crypto.dll";
});
Spreadsheet = dotNet.import("GemBox.Spreadsheet");
Spreadsheet.SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
// 如何把 sheet 嵌入到 form里面??
//win.setParent(Spreadsheet,mainForm.custom.hwnd);
mainForm.custom.onEraseBkgnd = lambda() 0;
mainForm.custom.adjust = function( cx,cy,wParam ) {
Spreadsheet.Width = cx;
Spreadsheet.Height = cy;
};
mainForm.custom.adjust();
//新建Excel
wb = Spreadsheet.ExcelFile();
//新增worksheet
ws = wb.Worksheets.Add("Sheet 1");
//读取Excel
//wb = Spreadsheet.ExcelFile.Load("");
//按Cell名称读写值
ws.Cells.Item["A1"].Value = 123444;
//按Cell行列读写公式,行列从0开始计数
ws.Rows.Item[1].Cells.Item[2].Formula = "= A1";
//保存
wb.Save(io.fullpath("\123.xlsx"));
mainForm.show();
return win.loopMessage();回复#4 @andrew7baker :
这个是后台处理数据的, 不是显示数据的, 所以没有显示在界面上的功能.
如果你想把处理好的数据显示在前面界面上, 要和DataGridView配合使用, 用DataGridView来显示数据, 具体看
登录后方可回帖


谢谢分享, 我帮你增加了简介和dll打包工程.
, 方面其他人测试.