如何使用EEPlus

问题描述 投票:0回答:1

我是编程新手,我正在尝试读取和显示 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 进行合并;在我的脚本中。

c# excel epplus revit-api
1个回答
0
投票

根据文档 here.

,您有一些替代方案来配置 Epplus 版本 5 强制要求的 LicenseContext

在我看来,Asp Net Applications 最实用的方法是在 appSettings.json 文件中配置它,如下所示:

{
    {
    "EPPlus": {
        "ExcelPackage": {
            "LicenseContext": "Commercial" or "NonCommercial"
            }
        }
    }
}

你没有说你正在开发什么样的应用程序(从发布的代码来看它似乎是WPF)。在这种情况下,请检查上面的文档适合您的项目类型。

© www.soinside.com 2019 - 2024. All rights reserved.