问题标签 [spreadsheetlight]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 创建 Excel 表单控件 - 按钮
我有一个项目使用以下三个库来访问 XLSM 文档
- 打开 XML
- 封闭的 XML
- 电子表格灯
我现在想创建一个表单控件(一个按钮),它将分配一个宏(只是我用 VBA 创建的一个公共函数)。
我该怎么做呢?一个图书馆比另一个图书馆好吗?(或者除了 Open XML 之外,他们中的任何一个都让我这样做)
如果有人使用特定语法,我正在使用 C# :)
c# - 如何在电子表格中使用 c# 获取单元格的格式类型
我正在使用电子表格库来使用 c# 读取 Excel 工作表(.xslx)值。
我可以使用以下代码读取单元格值
我正在获取单元格值。但是我怎样才能得到单元格的数据类型呢?我已经检查了文档,但没有找到解决方案。
注意:对于 .xls 类型的 excel 文件,我使用 ExcelLibrary.dll 库,我可以使用以下代码轻松获取单元格的数据类型
但是在电子表格中没有类似的方法。
c# - 安装 Open XML 2.0
我正在尝试使用电子表格灯写入 excel 文件,但显然电子表格灯使用 XML 2.0 并且我安装了 2.5。我已取消安装 2.5 版本并已将 2.0 引用添加到我的项目中,但我仍然收到一条错误消息,告诉我我正在使用 2.5 版本。我的问题很简单:如何让编译器(?)使用 2.0 版本而不是 2.5 版本?
真诚的阿克塞尔
spreadsheet - 电子表格公式不起作用
我正在使用Spreadsheetlight创建 excel 文档。我需要在特定单元格上使用公式,但它不起作用。编码:
有什么我想念的吗?设置公式如'=E9'
作为公式存储在单元格中并在最终文档中工作。任何想法为什么它不起作用?
c# - 密码保护生成的 Excel 工作表
我的代码生成一个 OpenXML 电子表格,我想防止修改和删除操作。我的解决方案似乎有效,但我发现在 Excel 中打开它,在“审阅”面板中,我可以按下“取消保护”按钮,并且 Excel 无需询问任何密码即可取消保护选定的工作表。我怎样才能避免这种情况?
c# - 如何将早期版本的开放 XML 添加到我的 C# 项目?
我正在使用 Visual Studio 处理 C# 中的应用程序,该应用程序可以操作 xlsx 电子表格。使用开放 XML v2.5 和电子表格灯一切正常,但是保存功能会引发此错误:
无法从程序集中加载类型“DocumentFormat.OpenXml.Spreadsheet.SmartTags”
以防万一,这是我要运行的代码。它是带有两个文本框的表单的按钮单击事件,用于检索一些值并保存其他值:
我查了一下,我猜在开放 XML 版本 2.5 中出了点问题。我想使用 2.0 或更早的版本。当我搜索一个 nuget 包时,唯一可用的是最新版本。如何安装旧版本?有没有办法让我的代码与 2.5 版一起使用?谢谢你。
c# - 有没有办法将 2 个 excel 文件的内容(包括格式)与 SpreadsheetLight 进行比较?
我有两个用 SpreadsheetLight 生成的 excel 文件。我需要做的是比较两者是否相同。
对于文本文件,这很容易,因为我只会在每个文件上生成一个 MD5 和,但由于这些是 .xlsx 文件,这并不像每个文件生成都会导致文件略有不同那样简单。从我已经看到的情况来看,有一个解决方案可以基本上比较 2 个 excel 文件的内容本身:比较两个 excel 文件的差异
那么与该问题中的基本问题和答案有什么不同:
- 我正在使用 SpreadsheetLight 生成两个文件
- 我不仅需要比较文件中的数据,还需要比较所有格式,...
所以我的问题是:有没有其他方法可以比较 2 个 excel 文件(尤其是 SpreadsheetLight 涉及)?
c# - SpreadsheetLight 处理多个工作表
我正在使用SpreadsheetLight从 WinForms 项目中写入日志文件。我的意图是将日志条目写入同一个文件中的三个工作表,如果可以避免的Interop
话,我真的想避免使用它。
我从一个用 Excel 制作的模板文件开始,其中三个工作表预先填充了行标题,并且由于每个工作表都具有相同的基本属性(可以独立变化),我将每个工作表封装在一个类中,其基础看起来像这样:
还有一些在LogSheet
类中没有显示的方法来处理将数据写入正确的位置。
这一切似乎工作正常,在调试时,我可以看到实例化的三个工作表中的每一个都new LogSheet(<sheetName>)
包含在我向它们写入内容之后它们应该包含的数据。
问题是,当我想保存数据时,我可以侥幸逃脱this.data.Save()
,但它只保存一个工作表,而另外两个现在处于不确定状态,因为该Save()
方法是终端并关闭 Excel 文件。在其他任何一张纸上尝试该Save()
方法,最终都会出现异常"Object reference not set to an object"
,因为当然,Save()
杀死了我的电子表格,并且这些表格不再有任何可参考的内容。结果文件只有我第一次保存的数据。
对于如何解决这个问题,我最好的猜测是不要SLDocument
为每张工作表实例化一个新工作表,而是在SLDocument.SelectWorksheet()
每次我想写入特定工作表时使用,但我仍然希望将内容封装在 LogSheet 类中,因为其中的所有其他内容都是仍然相关。
还有其他建议吗?
c# - 如何使用 SpreadsheetLight 库遍历工作簿中的未知工作表名称
我正在尝试使用 SpreadsheetLight 库遍历工作簿中的未知工作表名称。
使用SLDocument sl = new SLDocument("ModifyExistingSpreadsheetOriginal.xlsx", "Sheet1")
示例中的语句仅允许为工作表输入字符串。
是否有某种方法可以引用工作表索引或执行类似于foreach string sh in Workbook.Sheets
循环的操作?