zoukankan      html  css  js  c++  java
  • Open XML格式化Excel数值

    Open xml 中格式化Excel 中的数值时,需要使用NumberingFormat类,当Excel序列化成xml的时候,Numberingformat对象会被序列化成x:NumFmt。

    NumFormat元素用于指定数值型数据是怎么格式化和呈现出来的。等同于在Excel上选中单元格后选择数值格式,如下图

    指定一个单元格的数值格式有以下几个步骤:

    1. 创建一个数值格式的NumberingFormat,并设置一个Id(自定义),指定FormatCode,FormatCode可以是自定义的Code,也可以是一些系统约定的格如:"@"标示文本格式

    NumberingFormat numberingFormat1 = new NumberingFormat() { NumberFormatId = id, FormatCode = formatStr };// "#0.00######"
                formats.Append(numberingFormat1);

    注:系统约定的格式有下面这些:

    ID

    formatCode

    0

    General

    1

    0

    2

    0.00

    3

    #,##0

    4

    #,##0.00

    9

    0%

    10

    0.00%

    11

    0.00E+00

    12

    # ?/?

    13

    # ??/??

    14

    mm-dd-yy

    15

    d-mmm-yy

    16

    d-mmm

    17

    mmm-yy

    18

    h:mm AM/PM

    19

    h:mm:ss AM/PM

    20

    h:mm

    21

    h:mm:ss

    22

    m/d/yy h:mm

    37

    #,##0 ;(#,##0)

    38

    #,##0 ;[Red](#,##0)

    39

    #,##0.00;(#,##0.00)

    40

    #,##0.00;[Red](#,##0.00)

    45

    mm:ss

    46

    [h]:mm:ss

    47

    mmss.0

    48

    ##0.0E+0

    49

    @

    把它添加到styleSheet的NumberingFormats中,

    用这个numberFormatId创建CellFormat,添加到stylesheet的Cellformats中,返回Index

     public static UInt32Value CreateCellFormat(
               Stylesheet styleSheet,
               UInt32Value fontIndex,
               UInt32Value fillIndex,
               UInt32Value numberFormatId)
            {
                CellFormat cellFormat = null;
                int i = 0;
              
                if (cellFormat == null)
                {
                    cellFormat = new CellFormat();
                    //isNew = true;
                }
                  
    
                if (fontIndex != null)
                    cellFormat.FontId = fontIndex;
    
                if (fillIndex != null)
                    cellFormat.FillId = fillIndex;
    
                if (numberFormatId != null)
                {
                    cellFormat.NumberFormatId = numberFormatId;
                    cellFormat.ApplyNumberFormat = BooleanValue.FromBoolean(true);
                }
                //if (isNew)
                    styleSheet.CellFormats.Append(cellFormat);
    
                UInt32Value result = styleSheet.CellFormats.Count;
                styleSheet.CellFormats.Count++;
                return result;
            }

    最后指定单元格的StyleIndex为上面创建的NumberingFormat在

    cell.StyleIndex = _textNumberStyleId;

    OK.

    示例代码下载地址:

    http://files.cnblogs.com/files/Hcsdn/ExcelDataImporter.rar

    示例代码调用方法如下:

     System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("server=.;database=demojc;user id=sa;password=!3323");
                System.Data.SqlClient.SqlDataAdapter com = new System.Data.SqlClient.SqlDataAdapter("SELECT U.U_UserID,U.U_FirstName,Cast(u.U_F_ID as nvarchar(10)) FROM U", conn);
                System.Data.DataSet ds = new DataSet();
                com.Fill(ds);
                ManuOnline.OpenXmlAnalysisReports.DataImporter.ImportData(@"E:1.xlsx", "Sheet1", ds.Tables[0], null);

  • 相关阅读:
    poj 2485 Highways 最小生成树
    hdu 3415 Max Sum of MaxKsubsequence
    poj 3026 Borg Maze
    poj 2823 Sliding Window 单调队列
    poj 1258 AgriNet
    hdu 1045 Fire Net (二分图匹配)
    poj 1789 Truck History MST(最小生成树)
    fafu 1181 割点
    减肥瘦身健康秘方
    人生的问题
  • 原文地址:https://www.cnblogs.com/Hcsdn/p/6912354.html
Copyright © 2011-2022 走看看