167 lines
4.6 KiB
C#
167 lines
4.6 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using System.Threading;
|
|
using CPF.ReoGrid.DataFormat;
|
|
|
|
namespace CPF.ReoGrid.IO.OpenXML
|
|
{
|
|
internal sealed class BuiltinNumberFormats
|
|
{
|
|
public static bool SetFromExcelBuiltinFormat(Worksheet rgSheet, Cell cell, int formatId, out CellDataFormatFlag dataFormatFlag)
|
|
{
|
|
CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
|
|
CellDataFormatFlag? cellDataFormatFlag = null;
|
|
object dataFormatArgs = null;
|
|
switch (formatId)
|
|
{
|
|
case 0:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.General);
|
|
break;
|
|
case 1:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Number);
|
|
dataFormatArgs = new NumberDataFormatter.NumberFormatArgs
|
|
{
|
|
DecimalPlaces = 0,
|
|
UseSeparator = false
|
|
};
|
|
break;
|
|
case 2:
|
|
case 11:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Number);
|
|
dataFormatArgs = new NumberDataFormatter.NumberFormatArgs
|
|
{
|
|
DecimalPlaces = 2,
|
|
UseSeparator = false
|
|
};
|
|
break;
|
|
case 3:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Number);
|
|
dataFormatArgs = new NumberDataFormatter.NumberFormatArgs
|
|
{
|
|
DecimalPlaces = 0,
|
|
UseSeparator = true
|
|
};
|
|
break;
|
|
case 4:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Number);
|
|
dataFormatArgs = new NumberDataFormatter.NumberFormatArgs
|
|
{
|
|
DecimalPlaces = 2,
|
|
UseSeparator = true
|
|
};
|
|
break;
|
|
case 9:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Percent);
|
|
dataFormatArgs = new NumberDataFormatter.NumberFormatArgs
|
|
{
|
|
DecimalPlaces = 0,
|
|
UseSeparator = false
|
|
};
|
|
break;
|
|
case 10:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Percent);
|
|
dataFormatArgs = new NumberDataFormatter.NumberFormatArgs
|
|
{
|
|
DecimalPlaces = 2,
|
|
UseSeparator = false
|
|
};
|
|
break;
|
|
case 14:
|
|
case 15:
|
|
case 16:
|
|
case 17:
|
|
case 18:
|
|
case 19:
|
|
case 20:
|
|
case 21:
|
|
case 22:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.DateTime);
|
|
dataFormatArgs = new DateTimeDataFormatter.DateTimeFormatArgs
|
|
{
|
|
CultureName = currentCulture.Name,
|
|
Format = DateTimeFormat.Formats[formatId]
|
|
};
|
|
break;
|
|
case 37:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Number);
|
|
dataFormatArgs = new NumberDataFormatter.NumberFormatArgs
|
|
{
|
|
DecimalPlaces = 0,
|
|
UseSeparator = true,
|
|
NegativeStyle = NumberDataFormatter.NumberNegativeStyle.Brackets
|
|
};
|
|
break;
|
|
case 38:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Number);
|
|
dataFormatArgs = new NumberDataFormatter.NumberFormatArgs
|
|
{
|
|
DecimalPlaces = 0,
|
|
UseSeparator = true,
|
|
NegativeStyle = NumberDataFormatter.NumberNegativeStyle.RedBrackets
|
|
};
|
|
break;
|
|
case 39:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Number);
|
|
dataFormatArgs = new NumberDataFormatter.NumberFormatArgs
|
|
{
|
|
DecimalPlaces = 2,
|
|
UseSeparator = true,
|
|
NegativeStyle = NumberDataFormatter.NumberNegativeStyle.Brackets
|
|
};
|
|
break;
|
|
case 40:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Number);
|
|
dataFormatArgs = new NumberDataFormatter.NumberFormatArgs
|
|
{
|
|
DecimalPlaces = 2,
|
|
UseSeparator = true,
|
|
NegativeStyle = NumberDataFormatter.NumberNegativeStyle.RedBrackets
|
|
};
|
|
break;
|
|
case 45:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.DateTime);
|
|
dataFormatArgs = new DateTimeDataFormatter.DateTimeFormatArgs
|
|
{
|
|
CultureName = currentCulture.Name,
|
|
Format = "mm:ss"
|
|
};
|
|
break;
|
|
case 46:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.DateTime);
|
|
dataFormatArgs = new DateTimeDataFormatter.DateTimeFormatArgs
|
|
{
|
|
CultureName = currentCulture.Name,
|
|
Format = "h:mm:ss"
|
|
};
|
|
break;
|
|
case 47:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.DateTime);
|
|
dataFormatArgs = new DateTimeDataFormatter.DateTimeFormatArgs
|
|
{
|
|
CultureName = currentCulture.Name,
|
|
Format = "mmss.f"
|
|
};
|
|
break;
|
|
case 49:
|
|
cellDataFormatFlag = new CellDataFormatFlag?(CellDataFormatFlag.Text);
|
|
break;
|
|
}
|
|
bool flag = cellDataFormatFlag == null;
|
|
bool result;
|
|
if (flag)
|
|
{
|
|
dataFormatFlag = CellDataFormatFlag.General;
|
|
result = false;
|
|
}
|
|
else
|
|
{
|
|
cell.DataFormat = cellDataFormatFlag.Value;
|
|
cell.DataFormatArgs = dataFormatArgs;
|
|
dataFormatFlag = cellDataFormatFlag.Value;
|
|
result = true;
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
}
|