标签: spreadsheetlight

如何确保 OpenXml 程序集不会与 SpreadsheetLight 产生冲突?

我 Nugot SpreadsheetLight。为了随后使用它,我需要添加以下用途:

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using SpreadsheetLight;
Run Code Online (Sandbox Code Playgroud)

为了识别前两个(“DocumentFormat”),我还需要使用 NuGet Microsoft 的“Open XML Format SDK”

我得到了最新版本,2.5

然而,即便如此,我还是收到了一个关于需要引用它的错误消息:

“DocumentFormat.OpenXml.Spreadsheet.InlineString”类型是在未引用的程序集中定义的。您必须添加对程序集“DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的引用。

这行 SpreadsheetLight 代码激起了那个味精:

sl.SetCellValue("A1", true); // "sl" is an SLDocument
Run Code Online (Sandbox Code Playgroud)

因此,我从我的项目中删除了我拥有 NuGot(版本 2.6.0.0,运行时版本 v4.0.30319)的引用,然后通过浏览到 C:\Program Files(x86)\Open XML SDK\V2 添加回引用。 0\lib 并选择“DocumentFormat.OpenXml.dll”

然后我得到了一个编译器警告:

发现同一依赖程序集的不同版本之间存在冲突。请在项目文件中将“AutoGenerateBindingRedirects”属性设置为 true。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=294190

我注意到我从文件系统中添加的 DLL 是 2.5.5631.0 版本,而被 NuGot 安装作为参考的那个 DLL 是 2.6.0.0 版本,运行时版本也不同(v4.0.30319 是由NuGetting“Open XML Format SDK”,但是我手动添加的DLL版本是2.5.5631.0,Runtime Version v4.0.30319

根据这个,我得知我应该改变编辑的.csproj文件<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>为真-但AutoGenerateBindingRedirects不存在那里。

我不知道我是否应该添加它,如果是(在哪个“块”中)。我更喜欢谨慎行事并减轻警告引擎的影响。如何确保 OpenXml 程序集不会引起冲突?

csproj openxml openxml-sdk nuget spreadsheetlight

6
推荐指数
1
解决办法
5488
查看次数

使用SpreadsheetLight进行行计数

我正在寻找一个类似于DataTable.Rows.Count的函数,它可以与SLDocument一起使用,以找出有多少行包含数据.SpreadsheetLight中有可用的东西吗?实现这一目标的任何其他方法?

-Brendan

c# excel visual-studio spreadsheetlight

5
推荐指数
1
解决办法
2042
查看次数

错误消息“在更新模式下无法多次打开条目。” 在 Spreadsheet Lite SaveAs 函数中

执行dBWorksheet.SaveAs(xlsFileSpec)下面的代码时,我看到一个异常:

“在更新模式下无法多次打开条目。”

        SLDocument dBWorksheet = new SLDocument();
        TimeSpan interval = new TimeSpan(0, 0, 2);

        dBWorksheet.SetCellValue(2, 1, "Hour");
        dBWorksheet.SetCellValue(3, 1, "Time");

        int Row = 3;

        // Create the hour and time of day columns.
        for(TimeSpan dBTime = new TimeSpan(0, 0, 0); dBTime.TotalHours < 24; dBTime = dBTime.Add(interval)) 
        {
            dBWorksheet.SetCellValue(Row, 1, dBTime.Hours);
            dBWorksheet.SetCellValue(Row, 2, dBTime.ToString());

            Row++;
        }

        // Save the new worksheet.
        dBWorksheet.SaveAs(xlsFileSpec);
Run Code Online (Sandbox Code Playgroud)

spreadsheetlight .net-core

5
推荐指数
1
解决办法
8362
查看次数

安装Open XML 2.0

我正在尝试使用spreadsheetlight写入excel文件,但显然spreadsheetlight使用的是XML 2.0,我安装了2.5.我已经取消了2.5版本并且已经为我的项目添加了2.0参考,但我仍然收到一条错误消息,告诉我我正在使用2.5版本.我的问题很简单:如何让编译器(?)使用2.0版本而不是2.5版本?

真诚的阿克塞尔

c# xml openxml-sdk nuget-package spreadsheetlight

4
推荐指数
1
解决办法
3476
查看次数

如何将早期版本的开放XML添加到我的C#项目中?

我正在使用Visual Studio处理xlsx电子表格的C#应用​​程序.使用开放的XML v2.5和电子表格灯,一切正常,但是save函数会抛出此错误:

无法从程序集中加载"DocumentFormat.OpenXml.Spreadsheet.SmartTags"类型

以防万一,这是我试图运行的代码.它是一个带有两个文本框的表单的按钮单击事件,用于检索某些值并保存其他值:

        SLDocument sl = new SLDocument("example.xlsx", "Sheet1");
        int rowNum = Convert.ToInt32(barcodeNum.Text);
        string cellAddr = "C" + barcodeNum.Text; 
        string cellEnvelope = "B" + barcodeNum.Text;
        string cellOutDate = "E" + barcodeNum.Text;
        int envelopeNumber = Convert.ToInt32(envelopeNum.Text);
        string address = sl.GetCellValueAsString(cellAddr);
        MessageBox.Show(address);
        sl.SetCellValue(cellEnvelope, envelopeNum.Text);
        sl.SetCellValue(cellOutDate, DateTime.Now);
        sl.SaveAs("Example.xls");
Run Code Online (Sandbox Code Playgroud)

我查了一下,我想在开放的XML版本2.5中出现了一些问题.我想使用2.0或更早版本.当我搜索nuget包时,唯一可用的是最新版本.如何安装旧版本?有没有办法让我的代码与2.5版一起使用?谢谢.

c# xml excel visual-studio-2012 spreadsheetlight

0
推荐指数
1
解决办法
1122
查看次数