我 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 程序集不会引起冲突?
我正在寻找一个类似于DataTable.Rows.Count的函数,它可以与SLDocument一起使用,以找出有多少行包含数据.SpreadsheetLight中有可用的东西吗?实现这一目标的任何其他方法?
-Brendan
执行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写入excel文件,但显然spreadsheetlight使用的是XML 2.0,我安装了2.5.我已经取消了2.5版本并且已经为我的项目添加了2.0参考,但我仍然收到一条错误消息,告诉我我正在使用2.5版本.我的问题很简单:如何让编译器(?)使用2.0版本而不是2.5版本?
真诚的阿克塞尔
我正在使用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版一起使用?谢谢.