Tag: closedxml

如何启用Excel工作簿上的“共享”选项?

是否可以通过OpenXML或ClosedXML在Excel文档中启用“共享”? 或者任何其他库,如果它可以帮助…我相信这通常是当您保存文件(至less这是如何在VBA中工作)执行,但我找不到如何在C#中指定保存参数。 我想避免使用InterOp,因为我可能通过networking在多个文件上批量执行此过程。 编辑:根据2009年的一些旧页面 ,OpenXML无法运行受保护的文件是有限制的。 但是,这也适用于分享?

ClosedXML AddConditionalFormat()将引号添加到Excel中的值(法语)

所以我正在尝试使用ClosedXML。 我一直使用它,直到我遇到本地化。 条件格式化适用于英语,意大利语和德语版本的Windows。 这不是法文。 当区域设置为法语时, AddConditionalFormat().WhenEqualOrLessThan()方法无法正常工作。 它为条件语句添加引号。 当我在Excel中打开它时,我得到了规则: Cell Value <= "-98.00002" 它应该是: Cell Value <= -98.00002 我用其他语言运行它,它没有任何问题。 ws.Range(r, 1, r, 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.General; // G3 compatibility ws.Cell(r, 2).AddConditionalFormat().WhenEqualOrLessThan(-98.00002f) .Font.SetFontColor(XLColor.LightGray); ws.SheetView.FreezeRows(2); ws.Columns().AdjustToContents();

如何使用ClosedXML在同一个Excel单元格中使用不同颜色的文本?

如何使用ClosedXML在同一个Excel单元格中使用不同颜色的文本? worksheet.Cell(1,1).Value.Character[StartIndex, NoOfChar].Font.Color….?? ClosedXML没有上面的东西,请帮助我在同一个单元格中使用两种不同的字体颜色。

你可以在ClosedXML(C#)中填充一个范围

我想知道在使用closedXML而不是一次填充单个单元格时,是否可以从数组中一次性填充范围。 另外,如果可以从一个数组中设置一个范围,比单元格循环和填充每个单元更快吗?

在C#中读取Excel数据和单元格格式

我正在寻找一个库,允许我在C#中读取Excel文档,但是我需要能够读取单元格格式以及电子表格中的数据。 我发现这个有用的问题列出了许多用于阅读Excel文档的不同select,但是这里提供的许多解决scheme只允许读取电子表格的内容,而不是单元格属性(例如字体,背景颜色等)。 但是,对于我的特定问题,我需要阅读包含大量单元格格式的文档,并且需要能够读取此格式的信息。 我需要阅读的Excel文档是一个xls文档,所以在这个阶段我不需要阅读xlsx 。 我正在寻找一个可以在没有安装Excel的服务器上使用的库,所以它必须是一个独立的解决scheme,最好是开源的。 有没有人有从xls文档阅读单元格格式信息的经验,并可以build议一个库,将有助于完成这项任务? 更新: 我正在寻找使用ClosedXml,因为从我已阅读它,它似乎提供了我所需要的function。 我正在从这个示例代码工作: http://closedxml.codeplex.com/wikipage?title=Finding%20and%20extracting%20the%20data&referringTitle=Documentation 并能够正常阅读Excel文档的内容。 我只使用了这个代码中的类别示例,但是将两个类别名称单元格格式化为背景颜色。 现在我正在尝试使用ClosedXml来确定: 如果在特定的单元格上定义了填充背景颜色 如果已经定义,检索填充的颜色(hex值将做) 以下是我尝试使用的一些代码: // Get all categories while (!categoryRow.Cell(coCategoryId).IsEmpty()) { IXLCell categoryName = categoryRow.Cell(coCategoryName); try { categories.Add(categoryName.GetString() + " " + categoryName.Style.Fill.BackgroundColor.Color.ToHex()); } catch { categories.Add(categoryName.GetString() + " None"); } categoryRow = categoryRow.RowBelow(); } 但是代码 categoryName.Style.Fill.BackgroundColor.Color.ToHex() 总是抛出“给定的钥匙不在字典里”。 ,即使对于有背景颜色定义的单元格。 任何人有任何想法如何得到这与ClosedXml的工作?

ClosedXML。 内存泄漏,而Workbook.Save()

我需要从dataTable中添加新的工作表。 对于这个任务我使用ClosedXML: workbook.Worksheets.Add(dataTable); workbook.Save(); workbook = new XLWorkbook(filePath); //reload file to avoid exception at next saving 我的进程使用了​​128 Mb的内存,但是在Workbook.Save()这个数字上升到了382 Mb。 在添加了下一个工作表内存使用从464 Mb到619 Mb之后。 但实际文件在这一点上是1.6 Mb。 这可能是什么原因?

如果小数部分为零,如何去除小数点分隔符?

我正在使用ClosedXML来创build一个Excel电子表格。 问题发生在格式化单元格时,包含百分比。 我想到的格式是0.##% 。 小数部分不为零时表示正常,表示为: 1,15% 。 但是当它是整数值时,它使小数点分隔符可见,而隐藏零,例如: 5,% 。 我怎样才能让它隐藏小数点分隔符? 这是一个小程序,展示了这个问题: XLWorkbook wb = new XLWorkbook(); var ws = wb.AddWorksheet("test"); string format = "0.##%"; var cell = ws.Cell(1, 1); cell.SetValue(5.2M / 100); cell.Style.NumberFormat.Format = format; cell = ws.Cell(1, 2); cell.SetValue(5M / 100); cell.Style.NumberFormat.Format = format; wb.SaveAs("test.xlsx"); 和输出是

ClosedXML Excel按多列中的值筛选行

我有一个Excel文件,有几千行和最多“BP”的列。 我需要通过列C和BP中的特定值来过滤所有这些行。 我按照下面的代码testing了ClosedXML中的filterfunction。 当我将一个filter应用到一列时,所有工作都很好,数据保存在新文件中。 当我尝试应用两个filter时,执行的最后一个是应用的filter。 我试图使用工作表作为范围/表,相同的过滤问题。 我最终创build了“行”expression式,工作,但第一行(标题)被过滤掉。 public static void Filter(string source, string newFile) { using (var workbook = new XLWorkbook(source)) { IXLWorksheet worksheet = workbook.Worksheet(1); int salesFoundCell = worksheet.FirstRow().Cells().First(c => c.Value.ToString() == "Sales Order Description").Address.ColumnNumber; int revenueFoundCell = worksheet.FirstRow().Cells().First(c => c.Value.ToString() == "Revenue recognition date").Address.ColumnNumber; //worksheet.RangeUsed().SetAutoFilter().Column(salesFoundCell).EqualTo("Equipment Sale"); //worksheet.RangeUsed().SetAutoFilter().Column(revenueFoundCell).EqualTo("00.00.0000"); //var rows = worksheet.RowsUsed().Where(r => r.CellsUsed().Any(c […]

为多个Excel表单使用相同的模板

我正在处理ASP.NET应用程序,其中有一个以.xls格式导出​​实现的function。 每个实现可以有更多的项目,所以每个项目应该在Excel中有单独的工作表。 我有Excel模板,应该用于制作Excel表格。 问题是:此代码创build一个空模板,然后为不使用模板的项目创build工作表。 有select的时间段的天,列周,行动(在给定的时间内完成的事情),花费的时间和细节+工作描述的列。我正在使用ClosedXML。 我废除了不必要的LINQ和单元合并。 public FileContentResult Export(ExportRealizationViewModel newModel) { try { LINQ for employee whose realization is exported; LINQ for projects in realizations; XLWorkbook theWorkBook = new XLWorkbook(Server.MapPath(@"../Template.xlsx")); foreach (var project in projects) { var wsheet = theWorkBook.Worksheets.Add(project); } using (theWorkBook) { foreach (IXLWorksheet ws in theWorkBook.Worksheets) { LINQ for date period of […]

ClosedXml不会复制电子表格的打印机设置

我有xltx Excel的模板,当我从中创build(手动)新文档,然后单击File – >在Excel中Print第一张纸适合在一个页面上。 比在ClosedXml的帮助下从我的模板创build新的文档: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ClosedXML.Excel; namespace ClosedXml1 { class Program { static void Main(string[] args) { var tXltx = "t.xltx"; using (XLWorkbook workbook = new XLWorkbook(tXltx)) { using (XLWorkbook newWb = new XLWorkbook()) { foreach (XLWorksheet worksheet in workbook.Worksheets.Reverse()) { worksheet.CopyTo(newWb, worksheet.Name, 1); } newWb.SaveAs("new.xlsx"); […]