问题标签 [closedxml]

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.

0 投票
3 回答
4681 浏览

c# - 使用 OpenXML 从表中生成电子表格

目标:生成一个电子表格,其中工作表命名为每个工作表第一行列出的表和列名。这些实际上将基于从这些表构建的类。

问题:打开电子表格后,它声称发现“不可读的内容”并询问我是否要恢复。如果我选择是,它确实可以完美地恢复电子表格,但用户不必这样做。

观察:使用 SDK,我能够看到电子表格的内部工作原理,并且我注意到工作表的 xml 名称是真正的问题。在最初下载的版本中,它们被命名为 Sheet1 到 Sheet9,但随后它们进入到 Sheet1a 到 Sheet1f。所以基本上它用十六进制1-f对它们进行编号。在我对其进行修复后,他们将名称更正为纯数字。

不确定您是否可以看到图片,看起来我的工作阻止了该网站:/ SDK查看

注意:我查看了我的代码,但没有看到任何可以具体命名这些内部 xml 工作表的地方,因此我不确定要与您分享哪些代码,但我发布了创建这些工作表的代码部分。

构建电子表格的方法:

构建工作表的方法:

0 投票
1 回答
2937 浏览

c# - 如何在 Excel 工作簿上启用“共享”选项?

是否可以通过OpenXMLClosedXML在 excel 文档上启用“共享” ?或者任何其他库,如果它可以提供帮助......我相信这通常是在您保存文档时执行的(至少它在 VBA 中是这样工作的),但我找不到如何在 C# 中指定保存参数。

我想避免使用 InterOp,因为我可能会通过网络在多个文件上批处理这个过程。

编辑:根据2009 的一些旧页面,OpenXML 无法操作受保护的文件存在限制。但是,这也适用于共享吗?

0 投票
1 回答
1485 浏览

c# - ClosedXML 区分大小写的列标题

例如,我有这样的代码:

当我打开刚刚创建的文件时,我看到警报:“Excel 在 Excel.xlsx 中发现了不可读的内容 ....”

如果我确认此警报 excel 会自动为“区分大小写”列添加“2”。

如何解决这个问题?

0 投票
1 回答
1904 浏览

asp.net - 向现有 Excel 表添加新行时图表不会更新(不必使用命名范围)

我对使用 closedXMl 和 Excel 也很陌生(至少为此目的),如果我问愚蠢的问题,我很抱歉。

我知道 closedXML 还不支持图表,所以唯一想到解决这个问题的是使用excel table创建我的图表。这样,我认为 ClosedXML 会在我插入新行时更新范围,并且图表会选择它。好吧,它没有。至少当我使用 closedXML 库从代码中添加行时不会。

奇怪的是,从 excel 中添加新行会自动更新图表,但如果我想从代码中获得相同的结果,我必须使用 OFFSET 公式和命名范围,然后将图表源数据设置为这些命名范围。这就是为什么我想知道我用来插入新行的代码是否有问题:

如您所见,代码非常简单,模板也很简单,它只包含两列:“Year”(table1[Year])和“Sales”(Table1[Sales]

我认为这与我的模板没有任何关系,因为正如我告诉你的那样,直接从 excel 添加新行按预期工作,只有当我从代码生成表格时,图表系列才不包含新行添加的 在此处输入图像描述

有必要手动添加新范围(Sheet1!Table1[Sales]Sheet1!Table1[Year]),因为它只包括第一行(插入表格时默认添加的行) 在此处输入图像描述

任何帮助将非常感激

PS 这是一个包含完整代码以及 excel 模板的 rar链接(\Templates\MyTemplate.xlsx)

0 投票
6 回答
43466 浏览

c# - 如何使用 ClosedXml 使 Excel 在公式单元格中换行

问题是单元格内容没有被包装,当该单元格包含一个引用具有一些长字符串的单元格的公式时。

CodePlex上,我找到了一个关于这个问题的线程和一个简单的代码来查看问题:

我还尝试手动设置行高而不是包装单元格:

然而也没有成功。

对此我能做些什么吗?


根据 Peter Albert 的评论,我尝试制作设置行的AutoFit. 我设法在 ClosedXML 中找到的唯一方法是workSheet.Row(3).AdjustToContent();. 但这也不起作用(既不调整某些列的内容)。

0 投票
1 回答
4786 浏览

excel - 如何在 ClosedXML 中创建数据透视表的示例

我们使用 ClosedXML 生成 .XLSX 电子表格,因为它小巧、灵活且快速。似乎所有的数据透视表类和方法都在 API 中,但是没有关于如何(以正确的顺序)创建数据透视表的文档或示例。我们的猜测尝试产生的文件在打开时会给出有关 XML 损坏的错误,并且 Excel 会提示您删除数据透视表。

0 投票
1 回答
2137 浏览

.net - 确定 IXLCell 是否使用 DateTime 格式

全部,

在 .NET 中,我使用 ClosedXML 读取上传的 Excel 文件并将单元格转换为二维字符串数组。最终目标是修改某些单元格并将修改后的单元格显示给用户。

我目前无法处理存储 DateTime 值的单元格。奇怪的是,当我读取单元格的数据类型时,它返回 XLCellValues.Number(不是 XLCellValues.DateTime,这是我所期望的)。我发现 Excel 实际上将 DateTimes 存储为双精度数据,其中包含一些元数据,表示将其转换为日期,这可能解释了该问题。

我想知道是否有人知道使用 ClosedXML 来检查 Excel 单元格的值是否为 DateTime 类型的方法?如果是这样,我如何将该值转换为 .NET DateTime?

谢谢!

0 投票
1 回答
1237 浏览

c# - 如果小数部分为零,如何删除小数分隔符?

我正在使用ClosedXML创建一个 Excel 电子表格。该问题发生在格式化单元格时,包含百分比。

我想出的格式是0.##%.

当小数部分不为零时效果很好,它显示:1,15%; 但是当它是整数值时,它会使小数点分隔符可见,同时隐藏零,例如:5,%.

我怎样才能让它也隐藏小数分隔符?

这是一个小程序,演示了这个问题:

输出是

在此处输入图像描述

0 投票
3 回答
19913 浏览

image - ClosedXML add image

I am able to add in an image to an excel spreadsheet by using OpenXML. However for the rest of the program I use ClosedXML to add data. I can add data at a specific cell using the column and row index. If I can add an image to an excel (It currently is a separate layer it seems, hovering over cells), how can I add it to a cell using ClosedXML?

This is the code I used, which I found here on stack overflow somewhere. I modified it to use a MemoryStream for the image. So firstly one of the problems I have is that I pass a spreadsheet document to the method, however I'm not sure what I can do in ClosedXML to fix this Really appreciate any help with how I could go about this. Ideally I would love to simply say

Thanks for any help!

0 投票
2 回答
4326 浏览

c# - ClosedXml 不复制电子表格的打印机设置

我有 xltx Excel 的模板,当我从中创建(手动)新文档并单击File->Print在 Excel 中,第一张纸适合一页。

比我在以下帮助下从我的模板创建新文档ClosedXml

当我打开生成的文档并打开打印对话框 ( File-> Print) 时,第一张纸不适合一页。

UPDATE1: XLWorksheet::CopyTo将页面设置从原始模板复制到生成的工作簿。因此,如果 xltx 模板具有页面设置FitToPages(1,1),则生成的文档将具有相同的页面设置。尽管如此,当我打开 ClosedXml 生成的工作表的打印预览时,它不适合一页。所以,问题是:原始工作簿和生成的工作簿具有相同的页面设置,但生成的工作表不适合一页。


所以有问题

  • 必须从原始模板中复制哪些结果表适合一页?
  • 有没有办法实现它?

解决方法