标签: closedxml

使用 ClosedXML 显示的更改工作表

我正在使用 ClosedXML 动态创建一个包含多个工作表的 Excel 工作簿。完成生成内容后,我正在努力将选定的工作表更改回工作簿中的第一张工作表,并且在文档中找不到有关如何更改显示的工作表的任何内容。我试过了:

wb.Worksheet(1).Select();
Run Code Online (Sandbox Code Playgroud)

这将选择工作表中的所有单元格,但不会将视图更改回来。

wb.Worksheet(1).Cells(1,1).Value = wb.Worksheet(1).Cells(1,1).Value
Run Code Online (Sandbox Code Playgroud)

似乎设置了值,但同样不会改变视图。

我曾尝试隐藏其他工作表,希望它能自动选择可见工作表,但这似乎不起作用。有什么建议?

c# excel closedxml

3
推荐指数
1
解决办法
4669
查看次数

Excel 无法识别来自 closedXML/c# 的公式

信息:以下代码在 foreach 循环中

作品:

indexSheet.Cell("G" + cellIndex).FormulaA1 = "=SUM(A1:A10)";
Run Code Online (Sandbox Code Playgroud)

只有在我直接在 excel 中输入时才有效:

indexSheet.Cell("G" + cellIndex).FormulaA1 = "=FIND(\"erw\";H5)"; // with Property
indexSheet.Cell("G" + cellIndex).SetFormulaA1("=FIND(\"erw\";H5)");  //with Function
indexSheet.Cell("G" + cellIndex).FormulaA1 = $"COUNTIF(H{cellIndex};\"*\"&$C$2&\"*\")*(MAX($G$4:G{cellIndex - 1})+1)";
indexSheet.Cell("B" + cellIndex).FormulaA1 = $"=IF(ROW()-{cellIndex}>MAX(G:G);\"\";HYPERLINK(CONCATENATE(\"#\";(INDEX(H:H;MATCH(ROW()-4;G:G;0)));\"!B{cellIndex}\");(INDEX(H:H;MATCH(ROW()-4;G:G;0)))))";
Run Code Online (Sandbox Code Playgroud)

我已经检查/尝试过:

  1. 因为在stackoverflow中存在类似的情况:如果我的函数的语言与我的excel语言匹配(都是英文)
  2. 我试过更简单的公式是否会像SUM()FIND()- >(-sum作品,找不工作)
  3. 我直接在 Excel 表格中输入了公式(此处使用的公式)
  4. 我使用硬编码的单元格信息在循环之外尝试了它,并且没有“cellindex”变量
  5. 查看了 closedXML 文档
  6. 公式开头和没有等号
  7. 我尝试使用 closedXML Vers。0.76.0 和 0.80.1(最新稳定版)

Excel中显示我: 图片1

这是: 图片2

图 2 中的 Linked XML-logfile 包含有关已删除部分的信息

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
    <logFileName>error035720_03.xml</logFileName><summary>Errors were detected in file 'C:\Users\XXX\Documents\Output\CodeBook.xlsx'</summary> …
Run Code Online (Sandbox Code Playgroud)

c# excel formulas excel-formula closedxml

3
推荐指数
1
解决办法
2456
查看次数

从ASP.NET MVC下载JQuery-AJAX请求中的excel文件

在我的ASP.NET MVC项目中,我使用ClosedXML生成了一个excel文件.

它在非ajax调用中运行良好.这是我的控制器动作方法

 // Prepare the response
 Response.Clear();
 Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
 Response.AddHeader("content-disposition", "attachment;filename=\"" + reportHeader + ".xlsx\"");

 // Flush the workbook to the Response.OutputStream
 using (MemoryStream memoryStream = new MemoryStream())
 {
     MyWorkBook.SaveAs(memoryStream);
     memoryStream.WriteTo(Response.OutputStream);
     memoryStream.Close();
 }
 Response.End();
Run Code Online (Sandbox Code Playgroud)

现在我试图通过ajax请求来做到这一点.但该文件不是从mvc控制器发送的.

$.ajax({
                url: url,
                type: "POST",
                data: fd,
                processData: false,  
                contentType: false,  
                beforeSend: function () {
                },
                success: function (response) {

                },
                error: function (request, status, error) {
                },
                complete: function () {
                }
            });
Run Code Online (Sandbox Code Playgroud)

我怎么能完成它?先感谢您.

ajax asp.net-mvc jquery download closedxml

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

ClosedXML生成格式错误的xlsx

当我打开我正在获取的文件时,无法使用ClosedXML输出一个好的文件

我们发现'filename.xlsx'中的某些内容存在问题.您是否希望我们尽可能多地恢复?如果您信任此工作簿的来源,请单击"是".

using (var workbook = new XLWorkbook())
{
    var worksheet = workbook.AddWorksheet("name");
    worksheet.Row(1).Cell(i + 1).SetValue("test");
    worksheet.Row(k + 2).Cell(column.Order + 1).SetValue("test value");
    using (var memoryStream = new MemoryStream())
    {
        workbook.SaveAs(memoryStream);
        memoryStream.Seek(0, SeekOrigin.Begin);
        return memoryStream.GetBuffer();
    }
}
Run Code Online (Sandbox Code Playgroud)

excel openxml malformed closedxml

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

是否有可能用closedXML从右到左制作一个excel表格

我正在使用closedXML生成一个XML文件(阿拉伯语),并且我需要此文件具有从右到左的布局,如何才能在closedXML中做到这一点。

XLWorkbook wb = new XLWorkbook();
var ws = wb.Worksheets.add("Sheet1");
ws.Cell(1,1).Value = "?????";
ws.Style.Alignment.ReadingOrder = XLAlignmentReadingOrderValues.RightToLeft;
Run Code Online (Sandbox Code Playgroud)

c# excel closedxml

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

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

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

worksheet.Cell(1,1).Value.Character[StartIndex, NoOfChar].Font.Color....??

ClosedXML没有上述内容,请帮助我在同一单元格中使用两种不同的字体颜色。

.net c# asp.net excel closedxml

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

ClosedXML 预定义样式

是否可以在 ClosedXML 中创建和存储预定义样式,以便稍后将其应用于某个范围?就像 Excel 可以。例如通过静态类:

public static class ReportStyle
{ 
    public static XLStyle Default {
        get {
           XLStyle style = new XLStyle(); //or something like that, I want a different XLStyle object
           style.Font. //etc, all the changes
           return style;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

后来我想做类似的事情:

range.Style = ReportStyle.Default;
Run Code Online (Sandbox Code Playgroud)

我想预先定义其中的一些,因为每个都可以在文档的不同部分多次使用,例如在不同的工作表中。现在我创建了一个粗略的解决方法,即隐藏在委托下的方法,因此我可以将它们存储在我的模块中(太多无法解释 - 我只需要将样式存储为对象 - 因为我需要复制它的能力):

public delegate bool StyleDelegate(IXLRange range);
Run Code Online (Sandbox Code Playgroud)

然后我可以将我的样式更改方法存储在里面,并在稍后的样式应用阶段调用它:

public static void SetStyleDefault(IXLRange range){
    //do some style changes for this range
}

public StyleDelegate Style { get; set; } = …
Run Code Online (Sandbox Code Playgroud)

c# closedxml

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

使用ClosedXML C#在Range中查找字符串

我希望能够使用ClosedXML查找某个范围内是否存在特定字符串,但是,我在文档中找不到任何find命令.目前我循环遍历1000行以查找字符串是否存在.有没有更有效的方法来做到这一点?

这是我的代码示例:

for (int j = 3; j <= PipeSheet.LastRowUsed().RowNumber(); j ++)
{
     if ((PipeSheet.Cell(j, ProdCodeColumnInPipe).Value.ToString().Trim() == SheetToEdit.Cell(i, ProdCodeColumnInMain).Value.ToString().Trim() & PipeSheet.Cell(j, 3).Value.ToString().Trim() == SheetToEdit.Cell(i, RegionCodeInMain).Value.ToString().Trim()))
     {
           SheetToEdit.Cell(i, ColumnToEdit).Value = "+";

           if ((new[] { "Open", "Under Review" }).Contains(PipeSheet.Cell(j, 5).Value.ToString().Trim()) & (new[] { "Forecast"}).Contains(PipeSheet.Cell(j, 4).Value.ToString().Trim()))
           {
                  if (FirstColumnHighlight > 1 & LastColumnHighlight > 1)
                  {
                        for (int k = FirstColumnHighlight; k <= LastColumnHighlight; k++)
                        {
                              SheetToEdit.Cell(i, k).Style.Fill.BackgroundColor = XLColor.FromArgb(255, 255, 0);
                        }
                  }
           }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# excel closedxml

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

ClosedXML新工作簿样式所有工作表

我刚开始使用ClosedXML。当我使用下面的代码创建一个新的工作簿时,它会自动将“蓝色,表样式浅色9”应用于每个工作表。我不希望工作表上有任何样式。如何不指定样式?

XLWorkbook wb = new XLWorkbook();
wb.Worksheets.Add(dt, "sheet1");
Run Code Online (Sandbox Code Playgroud)

我基本上只是用SQL数据表填充工作表。

c# closedxml

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

ClosedXML-设置单元格的数据类型不起作用

我有ClosedXML类似的问题,像这样的一个,但有点diferent。SetDataType方法不起作用。例如,我的值 string dps = "3.12.02" 不是日期或数字,它是有效的文本。

当我这样做时: ws.Cell(1, 1).Value = dps; ws.Cell(1, 1).SetDataType(XLCellValues.Text);

并保存该文件,然后在Excel中打开它,它仍然将其转换为一些红宝石,就像37593 我尝试在设置该值之前和之后放置它一样,没有任何变化。

有人可以帮我吗?

.net c# excel closedxml

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