标签: closedxml

ClosedXML格式单元格包含公式

我希望有人可以帮助我使用ClosedXML,因为我是Excel新手出口的人,而且从我看到的ClosedXML,文档在某些方面相当有限.

目前我正在将数据放入Datatable,将行格式化为正确的类型并使用正确的布局导出.

当我尝试在每个单元格中导出包含重复公式的一行时,会发生此问题.

我试图将公式简单地添加为一个字符串,然后我可以在文件导出时突出显示并转换,这显然不是理想的.我发现了一个XML类,XLFormula它完全没有文档,但我认为我应该对此做些什么.

目前我已经(注释掉我正在使用的方式XLFormula,试图XLFormula将公式作为字符串传递并设置为每单位的总出价):

dt.Columns.Add("Qty", typeof(int));
dt.Columns.Add("Bid Per Unit GBP", typeof(double));
dt.Columns.Add("Total Bid GBP"); //typeof(XLFormula)
foreach (DataRow dr in dt.Rows)
{
    //XLFormula totalBidFormula = new XLFormula();

    dr["Qty"] = 1;
    dr["Bid Per Unit GBP"] = 0.00;
    dr["Total Bid GBP"] = "=[@Qty]*[@[Bid Per Unit GBP]]";
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.如果我想用ClosedXML做的事情是不可能的,请告诉我,如果你可以建议一个替代的XML导出器(即使它已付费),这将有所帮助!

c# asp.net webforms closedxml

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

你如何让ClosedXML使用公式的条件格式?

根据文档,您可以使用以下语法向单元格添加条件格式:

.AddConditionalFormat().WhenEquals("=B1")
Run Code Online (Sandbox Code Playgroud)

所以我尝试了这个:

cell.AddConditionalFormat().WhenEquals("=F5=0")
    .Fill.SetBackgroundColor(XLColor.FromHtml("#f00"));
Run Code Online (Sandbox Code Playgroud)

但是,每当我尝试这个时,将电子表格加载到Excel中,并查看单元格的条件格式,它似乎已将其更改为简单的"单元格值等于"类型,而不是公式类型.所以我看到了这个:

在此输入图像描述

但我想看到的是:

在此输入图像描述

我错过了什么!?

.net c# conditional-formatting closedxml

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

需要在 PowerShell 脚本中使用 ClosedXML 设置单元格背景颜色

我正在使用 PowerShell 3 和 ClosedXML 将文件信息写入 Excel 工作表。在其中一个单元格中,我需要将背景颜色设置为浅蓝色(矢车菊蓝色或 RGB 中的 219、229、249)。我已经尝试了多种方法,但到目前为止都没有成功。根据 ClosedXML 站点,我应该能够引用 XLColor 对象。我还尝试了多种设置背景颜色的方法。

$cell.Style.Fill.BackgroundColor.Color(219, 229, 249)
Run Code Online (Sandbox Code Playgroud)

或 $cell.Style.Fill.SetBackgroundColor(6) 或 $cell.Style.Fill.SetBackgroundColor(XLColor.Blue)

任何建议将不胜感激。大多数示例是 C#,它们通常可以无缝转换,但这是我没有运气弄清楚的示例。

感谢里克·安德森

powershell closedxml

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

来自DocumentFormat.OpenXml的程序集加载错误

使用Microsoft ClosedXmlDocumentFormat.OpenXmlNuGet实用程序包时出现错误。更新了这些NuGet程序包(从2.7.2版到2.8.1版)后,现在出现以下异常:

异常System.IO.FileLoadException:无法加载文件或程序集'DocumentFormat.OpenXml,版本= 2.7.2.0,区域性=中性,PublicKeyToken = 8fb06cb64d019a17'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)

当我查看解决方案项目中的相关程序集时,它引用了正确的版本(2.8.1)。查看NuGet程序包管理器,没有对旧版2.7.2的引用(4个项目对新版2.8.1的引用)。在任何有关版本2.7.2的项目引用中,我都找不到任何提及。正在执行的应用程序文件夹中的文件也是正确的文件(2.8.1)(通过查看项目属性窗口的详细信息选项卡)。在我的解决方案中的其他地方,对旧版本号的引用(显然是导致此异常的地方)可以找到吗?

附加信息:我已经grep在执行此操作的应用程序目录(包括子目录)中的所有文件(包括二进制文件)上执行了操作,并且2.7.2找不到字符串。

另外,当我在Visual Studio中调试此程序时,它不会抛出异常。但是,当我在部署的构建文件夹中运行它时,我得到FileLoadException。

.net assembly-loading closedxml

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

ClosedXML 添加图片

我可以使用 OpenXML 将图像添加到 Excel 电子表格中。但是对于程序的其余部分,我使用 ClosedXML 添加数据。我可以使用列和行索引在特定单元格添加数据。如果我可以将图像添加到 excel(它目前似乎是一个单独的图层,悬停在单元格上),如何使用 ClosedXML 将其添加到单元格?

    //Adds an image to the excel file
    public void AddImageToExcel(SpreadsheetDocument sd, MemoryStream imagestream)
    {
        DrawingsPart dp = sd.WorkbookPart.WorksheetParts.First().AddNewPart<DrawingsPart>();
        ImagePart imgp = dp.AddImagePart(ImagePartType.Jpeg, sd.WorkbookPart.WorksheetParts.First().GetIdOfPart(dp));

        MemoryStream bmstream = new MemoryStream(imagestream.ToArray());
        bmstream.Seek(0, SeekOrigin.Begin);

        MemoryStream fs;
        using (fs = imagestream)
        {
            fs.Position = 0;
            imgp.FeedData(fs);
        }

        DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualDrawingProperties nvdp = new DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualDrawingProperties();
        nvdp.Id = 1025;
        nvdp.Name = "Chart Image";
        nvdp.Description = "Image";
        DocumentFormat.OpenXml.Drawing.PictureLocks piclocks = new DocumentFormat.OpenXml.Drawing.PictureLocks();
        piclocks.NoChangeAspect = true;
        piclocks.NoChangeArrowheads = true;
        DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualPictureDrawingProperties nvpdp …
Run Code Online (Sandbox Code Playgroud)

image add cell openxml closedxml

4
推荐指数
2
解决办法
2万
查看次数

ClosedXML 是否支持设置工作表的缩放级别?

我正在使用ClosedXML从 C# 生成 Excel 文件,并且我试图查看是否可以设置工作表的缩放级别。我在任何文档或谷歌搜索中都找不到这个?

有人知道怎么做这个吗?

c# excel closedxml

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

如何使用 ClosedXML 与动态列计数合并单元格?

这是根据文档使用 ClosedXML 合并单元格的方法。

worksheet.Range("B2:D3").Row(1).Merge();
Run Code Online (Sandbox Code Playgroud)

我的问题是我的列计数是动态的,我无法设置要合并的列字母值,因为我将基于 gridview 列计数来合并单元格。

谁能帮我使用 closeXML 合并单元格?

c# closedxml

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

使用ClosedXML另存为pdf

ClosedXML是否具有可用于将Excel文件另存为PDF的功能?

目前我正在使用ClosedXML来创建和填充excel文件,然后使用Interop保存为PDF.
但由于Interop依赖于syatem上安装的MS Office,因此每个版本的MS Office都会格式化.而且由于ClosedXML不需要安装MS Office,因此无需使用Interop即可直接从中导出或保存为PDF.

.net c# pdf excel closedxml

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

如何从流中打开 ClosedXML 工作簿?

我有一个 ASP.NET MVC 应用程序,用户可以在其中上传要处理的 xlsx 文件。

这会HttpPostedFileBase在上传中创建一个对象,该对象具有方便的流方法HttpPostedFileBase.InputStream

我想使用 ClosedXML 处理文件,但我不知道如何XLWorkbook从流构造对象。 其他SO答案使用像这样的普通文件:

 string fileName = "C:\\Folder1\\Prev.xlsx";
 var workbook = new XLWorkbook(fileName);
Run Code Online (Sandbox Code Playgroud)

这个问题探讨了如何SaveAs作为流,但我想从流创建。

XLWorkbook那么如何从流中打开一个呢?

c# closedxml

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

从 Blazor 服务器中的流下载失败

在尝试使用 ClosedXML 构建 Excel 文件时,我遇到了一些有关内存流的意外行为。在调试器中,我可以看到 MemoryStream ms 正在由该wb.SaveAs()函数填充。但是,当直接将其传递到 时DotNetStreamReference,该文件将作为 0 字节的 blob 下载。

奇怪的是,当我将流转换为字节数组并返回流时,该函数按预期工作。

我在这里错过了一些基本的东西吗?

这是使用MS 示例得出的

技术:

  • Blazor 服务器 .Net 6
  • 封闭XML 0.96

C# 代码

async Task ExportToExcel()
{
    string fileName = $"DocumentsExport{DateTime.UtcNow.Ticks}.xlsx";
    var wb = new ClosedXML.Excel.XLWorkbook();
    var ws = wb.AddWorksheet("Documents");

    // construct headers
    ws.Cell(1, 1).SetValue<string>("Document Name");
    ws.Cell(1, 2).SetValue<string>("Description");
    ws.Cell(1, 3).SetValue<string>("Sort Order");
    ws.Cell(1, 4).SetValue<string>("Category Name");
    ws.Cell(1, 5).SetValue<string>("Group Name");
    ws.Cell(1, 6).SetValue<string>("Date Modified");

    // construct worksheet contents
    for (int i = 0; i < documents.Count; …
Run Code Online (Sandbox Code Playgroud)

c# closedxml blazor-server-side .net-6.0

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