标签: closedxml

ClosedXML:使用百分数,小数点后1位和舍入?

我正在尝试使用C#并将ClosedXML数据输入Excel工作表.我找到了我正在寻找的大部分内容,但是我有一些问题ClosedXML需要处理小数位数以及舍入数字.

我目前正在使用cell.Style.NumberFormat.NumberFormatId = 10; 单元格来显示一个带有2位小数的百分比,但是我想只显示1位小数,而wikiClosedXML只显示0或2位小数的百分比.

接下来,当我不使用ClosedXML并直接添加数据时,Excel将向上舍入小数位,但是当我ClosedXML用来输入数据时,单元格不会向上舍入,是否有办法强制ClosedXML为我舍入,或者我需要手动做到这一点?

c# decimal rounding closedxml

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

ClosedXML以编程方式迭代工作表.

在我的工作簿中,我有4个具有不同选项卡名称的工作表.如果它们的名称如下:第一,第二,第三,第四.

我无法在网上找到如何迭代每个工作表的说法for for循环.在迭代时,我还想捕获Worksheet选项卡上的文本(First,Second等).

c# closedxml

7
推荐指数
1
解决办法
9958
查看次数

ClosedXML中的日期格式

我正在阅读excel表中的日期.我喜欢做的是强制日期为mm/dd/yyyy有没有办法在Closed XML中执行此操作.

我看了一眼https://closedxml.codeplex.com/documentation但无法找到如何强制或更新日期到某种格式.

closedxml

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

ClosedXML 向现有表添加数据

使用 ClosedXML,我试图将数据添加到现有表格中的现有 Excel 工作表中。最简单的方法是将表格添加到 Excel 工作表中,下面是如何执行此操作的快速示例。我不明白的是,如果你已经有一个空的表,你怎么能添加到现有的表中?

// Add a DataTable as a worksheet
            wb.Worksheets.Add(dataTable);
Run Code Online (Sandbox Code Playgroud)

c# openxml closedxml

7
推荐指数
2
解决办法
6567
查看次数

如何在ClosedXML中使用渐变填充(GradientFill)

我正在从事C#/ ASP.NET网络工作,并希望进行Excel导出.首先我找到了OpenXML,做了一些初步的步骤,但它真的很难用.现在,我正在使用ClosedXML,这是一个相当宽慰 - 到目前为止.

我想出了一个问题,就是在表格单元格上进行渐变填充...没有像普通填充那样的问题

worksheet.Cell(1,1).Style.Fill.SetBackgroundColor(XLColor.Red);
Run Code Online (Sandbox Code Playgroud)

或者像图案一样

worksheet.Cell(1,1).Style.Fill.PatternType = XLFillPatternValues.LightHorizontal;
worksheet.Cell(1,1).Style.Fill.PatternColor = XLColor.Green;
worksheet.Cell(1,1).Style.Fill.PatternBackgroundColor = XLColor.White;
Run Code Online (Sandbox Code Playgroud)

但是如何做GradientFill呢?据我所知,ClosedXML是基于OpenXML SDK构建的,所以应该可以做一个GradientFill - 就像(我还没测试)

GradientFill gFillEx = new GradientFill();
GradientStop gStop1st = new GradientStop();
gStop1st.Position = 0;
gStop1st.Color = new Color { Rgb = HexBinaryValue.FromString("00FF00") };
GradientStop gStop2nd = new GradientStop();
gStop2nd.Position = 1;
gStop2nd.Color = new Color { Rgb = HexBinaryValue.FromString("FFFFFF") };
gFillEx.InsertAt<GradientStop>(gStop1st, 0);
gFillEx.InsertAt<GradientStop>(gStop2nd, 1);
Run Code Online (Sandbox Code Playgroud)

但是如何进行 - 如何将此gFillEx设置为单元格的填充样式?我也不介意在这里直接使用styles.xml文件中的xml - 如果我只知道放在哪里.

任何提示或有用的想法?谢谢.

c# openxml-sdk closedxml

6
推荐指数
1
解决办法
1510
查看次数

使用 ClosedXML 创建下拉列表

我在我的项目中实现了Excel模板下载。我使用ClosedXML

我有两张Excel表

Sheet1:在此工作表中,我有一个名为“类型”的列 ,我可以在其中创建下拉列表,它是第三列。

Sheet2:在这张表中,我有一个名为“类型”的列 ,其范围地址为:B2:B4,它是第二列。

类型值为:

Employee

Student

Teacher 
Run Code Online (Sandbox Code Playgroud)

现在,我想创建一个下拉列表。

我在ClosedXML中创建了一个下拉列表,代码是:

//Getting the range of sheet 2

var range = workbook.Worksheet(2).Range(workbook.Worksheet(2).Cell(2,2).Address,workbook.Worksheet(2).Cell(4,2).Address);

//Applying sheet 2's range with sheet 1 
workbook.Worksheet(1).Column(3).SetDataValidation().List(range:range);

wb.Worksheet(1).Column(3).SetDataValidation().IgnoreBlanks = true;
wb.Worksheet(1).Column(3).SetDataValidation().InCellDropdown = true;
Run Code Online (Sandbox Code Playgroud)

我在单元格的右端看到了下拉符号,但没有得到其中的值。

.net c# excel closedxml

6
推荐指数
1
解决办法
7814
查看次数

如何使用ClosedXml将excel中的整个工作表数据读入DataTable

Excel 工作表包含 60K 条记录。需要读取并存入DataTable。目前正在逐行阅读。有没有其他更好的方法使用 ClosedXml。

DataTable dt = new DataTable();
var wb = new XLWorkbook(fileName, XLEventTracking.Disabled);
using (wb)
{
    var ws = wb.Worksheet(1);
    using (ws)
    {                    
        var headerRow = ws.Row(3);
        int lastColumn = 32;
        foreach (var col in headerRow.Cells(true))
        {
            dt.Columns.Add(col.Value.ToString());
        }
        foreach (var row in ws.Rows().Skip(3))
        {
            var dr = dt.NewRow();
            for (int index = 0; index < lastColumn; index++)
            {
                dr[index] = row.Cell(index + 1).Value;
            }
            dt.Rows.Add(dr);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net closedxml

6
推荐指数
1
解决办法
4466
查看次数

如何使用 closexml 将多个数据表添加到一个工作表?

我有多个包含数据的数据表,我想将它们添加到带有空格的单张纸中。我正在使用 ClosedXML 开发导出 excel 实用程序。

c# asp.net excel closedxml

6
推荐指数
1
解决办法
5900
查看次数

无法在 ClosedXML 中插入最小日期时间作为单元格值

ClosedXml 不允许将最小日期时间插入单元格。我的数据表包含 ClosedXml 不喜欢的最小日期时间值。

using (var workbook = new XLWorkbook())
{
    var dataTable = GetDataTable();
    workbook.Worksheets.Add(dataTable, "myWorksheet"); // Exception thrown
    workbook.SaveAs(filePath);
}
Run Code Online (Sandbox Code Playgroud)

添加工作表时抛出异常: “无法将单元格值设置为 01/01/0001 00:00:00”

如何允许 ClosedXml 插入此值而不引发异常?例如,它可以写入空值而不是抛出异常。是否可以在不修改数据表来清理这些最小日期时间值的情况下解决这个问题?

c# closedxml

6
推荐指数
1
解决办法
5526
查看次数

如何将 Excel (.xlsx) 文件导入并显示到 Blazor WASM 客户端(无需上传到服务器)

正如标题所说。网上有很多用于将文件上传到后端的示例,但我在验证客户端/离线后仅上传数据(无文件)。理论上,任何在 .Net5 上运行的东西都应该能够在 WASM 中以接近的性能运行。我正在尝试将这些繁重的操作卸载到客户的机器上。

我在 ClosedXML 方面取得了一些成功,但是当文件有几千行时,它会变得非常慢。在 Blazor 服务器端使用 ClosedXML 轻松加载 100,000 行。

笔记:

  • 使用 MudBlazor UI 组件
  • 我有一个来自文件的流,而不是 ClosedXML 的文件路径(就像我在控制台应用程序上一样),我认为这是 WASM 中的唯一方法,但我可能是错的。
  • 我在 NPOI 中运行了相同的代码,结果相似(WASM 慢,服务器端快)。
  • 我宁愿避免使用 EPPlus,除非它有神奇的修复方法。

页:

@page "/upload"
@inject HttpClient Http

<h1>Upload Data</h1>

<p>This component demonstrates uploading data from Excel.</p>

<InputFile id="fileInput" OnChange="UploadFiles" hidden single />

<MudButton HtmlTag="label"
           Variant="Variant.Filled"
           Color="Color.Primary"
           StartIcon="@Icons.Filled.CloudUpload"
           for="fileInput">
    Upload Files
</MudButton>

@if (dataTable == null)
{
    <p><em>Please upload Excel File</em></p>
}
else
{
    <MudTable Items="@dataTable.AsEnumerable().Take(500)" Hover="true" Breakpoint="Breakpoint.Sm" T="DataRow" RowsPerPage="100">
        <HeaderContent>
            @foreach …
Run Code Online (Sandbox Code Playgroud)

c# npoi closedxml .net-5 blazor-webassembly

6
推荐指数
0
解决办法
5325
查看次数