Добавление формата валюты в экспорт Excel с использованием NPOI dll - не работает - PullRequest
0 голосов
/ 20 января 2019

Я экспортирую данные в файл Excel, используя NPOI dll.

Данные относятся к типу суммы, которая должна быть представлена ​​в денежном формате: $ #, ###. ## а также в формате даты.

Я добавил формат в ячейки. но данные не экспортируются в Excel в формате Деньги / дата

Любые ответы на это?

вот мой код:

Я перепробовал все виды форматов currecy, которые я нашел в поиске Google, но ничего не получалось, он по-прежнему экспортируется в Excel в виде текста, а не типа валюты / даты

public enum StyleDataTypes { NotDeclared = 0, Money = 1, Percentage = 2, Number = 3, Date = 4 }

     public class ColumnInfoAttribute : Attribute


 {


    private string displayNoValue = "";

    public string DisplayNoValue
    {
        get { return displayNoValue; }
        set { displayNoValue = value; }
    }

    private StyleDataTypes styleType = StyleDataTypes.NotDeclared;

    public StyleDataTypes StyleType
    {
        get { return styleType; }
        set { styleType = value; }
    }

}


IDataFormat dataFormatCustom = sheet.Workbook.CreateDataFormat();

            ICellStyle dateStyle = sheet.Workbook.CreateCellStyle(); //date
            dateStyle.DataFormat = dataFormatCustom.GetFormat("yyyy/MM/dd HH:mm:ss");

            ICellStyle amountStyle = sheet.Workbook.CreateCellStyle(); //money
            amountStyle.DataFormat = dataFormatCustom.GetFormat("$#,##0.00");

  StyleDataTypes dataType = ((ColumnInfoAttribute)attr).StyleType;   
 switch (dataType)
                    {
                        case StyleDataTypes.Date:
                           cell.CellStyle.DataFormat = dateStyle.DataFormat;
                            break;
                        case StyleDataTypes.Number:
                           cell.SetCellType(CellType.Numeric);
                            break;
                        case StyleDataTypes.Percentage:
                            cell.CellStyle.DataFormat = percentagesStyle.DataFormat;
                            break;
                        case StyleDataTypes.Money:
                            cell.CellStyle.DataFormat = amountStyle.DataFormat;
                            break;
                    }

в поле Excel он отображается как текстовое поле, а не как пользовательский.

1 Ответ

0 голосов
/ 20 января 2019

Сначала вы не создаете DataFormat.

Попробуйте этот пример

ICellStyle amountStyle = sheet.Workbook.CreateCellStyle(); //money
amountStyle.DataFormat = sheet.Workbook.CreateDataFormat().GetFormat(.GetFormat("$#,##0.00");
...