OpenXML SDK - Excel更改单元格格式 - C#

5
我有一个用C#编写的Web应用程序。 我使用xlsx模板创建文档。由于xlsx格式比较复杂,因此我选择了使用模板而不是从头开始创建。 在单元格x2中,大多数数据以百分比形式输入,但在某些情况下它是一个金额。但是当它是金额时,我似乎无法更改该单元格的格式为百分比。该模板在该单元格中保存为百分比格式。设置单元格值的代码如下,并适用于其他保存为货币格式的单元格。我尝试根据另一个具有相同格式的单元格中的代码将单元格样式索引设置为103U。
如何更改单元格x2的格式?非常感谢您的帮助。提前致谢。
public void setCellValueNum(WorksheetPart ws, int row, int col, Double newVal)
    {
        Cell cl = getCell(ws.Worksheet, getColLetter(col), row);
        cl.CellValue = new CellValue(newVal.ToString());
        cl.CellReference = getColLetter(col) + row.ToString();
        cl.DataType =
            new EnumValue<CellValues>(CellValues.Number);

        //cl.StyleIndex = (UInt32Value)103U;

       }
2个回答

3

请查看编号格式,它是一种样式。在 openxml 中添加样式到 Excel

根据从 OpenXml Excel 文件中读取日期的说明,ID 值小于 164 的格式是内置的。您可以在那里找到格式列表。

这里有一个例子:使用 OpenXML 对单元格值应用 % 数字格式。只需将格式更改为:

nf2decimal.FormatCode = StringValue.FromString("0.0");

你需要添加一个引用单元格的样式,以下是一个示例:https://blogs.msdn.microsoft.com/chrisquon/2009/11/30/stylizing-your-excel-worksheets-with-open-xml-2-0/ OpenXML安装了一个工具来生成创建选定xlsx文件的C#代码 (https://tech.trailmax.info/2014/04/open-xml-sdk-tool-to-analyse-documents-and-generated-c-code/)。

谢谢Xavier,但这并没有告诉我如何将百分比转换为货币的代码。 通过使用模板,我走了捷径,没有创建整个样式逻辑。也许这是一个不好的想法,但当时没有时间去弄清楚细节。 我有生产力工具,但它只显示给我一个未签名的整数作为代码,通常我一直在使用它来进行必要的更改。 也许是因为我试图改变数字格式而不是样式! - user3150378

1

我使用下面这行代码将格式从百分数更改为货币。这可以工作,因为基本的数字格式已经默认添加到文件中。

cell.StyleIndex = 103U

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接