我是编程新手,我正在尝试读取和显示 excel 数据作为 revit 2022 的插件。我为此使用 visual studio 2022。我发现我需要 EEPlus 包来获取脚本的 excel 位。我不明白如何引用我使用的是非商业许可证? 我应该以某种方式将其合并到脚本中吗?:
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using(var package = new ExcelPackage(new FileInfo("MyWorkbook.xlsx")))
{
}
这就是我的剧本在一分钟内的样子:
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Jada
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.ReadOnly)]
public class ReadExcel : IExternalCommand
{
static AddInId appID = new AddInId(new Guid("D8822352-EC01-42AA-8165-714A26786540"));
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elementSet)
{
string filename = "";
System.Windows.Forms.OpenFileDialog openDialog = new System.Windows.Forms.OpenFileDialog();
openDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
openDialog.Filter = "Excel Files (*.xlsx)|*.xlsx";
if (openDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
filename = openDialog.FileName;
else
return Result.Cancelled;
string data = "";
using (ExcelPackage package = new ExcelPackage(new FileInfo(filename)))
{
ExcelWorksheet sheet = package.Workbook.Worksheets[1];
for (int row = 1; row < 9999; row++)
{
var thisValue = sheet.Cells[row, 1].Value;
if (thisValue == null || thisValue.ToString() == "")
break;
data += thisValue.ToString() + ",";
data += Environment.NewLine;
}
}
TaskDialog.Show("Excel", data);
return Result.Succeeded;
}
}
}
我已经在 NuGet 包管理器中下载了 EEPlus 包。我还使用 OfficeOpenXml 进行合并;在我的脚本中。
根据文档 here.
,您有一些替代方案来配置 Epplus 版本 5 强制要求的 LicenseContext在我看来,Asp Net Applications 最实用的方法是在 appSettings.json 文件中配置它,如下所示:
{
{
"EPPlus": {
"ExcelPackage": {
"LicenseContext": "Commercial" or "NonCommercial"
}
}
}
}
你没有说你正在开发什么样的应用程序(从发布的代码来看它似乎是WPF)。在这种情况下,请检查上面的文档适合您的项目类型。