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

时间:2018-03-22 21:26:21

标签: c# openxml

我在C#中有一个网络应用程序。 我正在使用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 个答案:

答案 0 :(得分:1)

请参见编号格式。 Add style to Excel in openxml

根据Reading dates from OpenXml Excel files,内置ID值小于164的格式。您可以在其中找到格式列表。

以下是一个示例:Applying % number format to a cell value using 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安装了一个生成c#代码的工具来创建一个选定的xlsx(https://tech.trailmax.info/2014/04/open-xml-sdk-tool-to-analyse-documents-and-generated-c-code/)。

答案 1 :(得分:1)

我使用以下代码行将格式从百分比更改为货币。这是有效的,因为默认情况下已将基本数字格式添加到文件中。

cell.StyleIndex = 103U