Как отформатировать валюту в ClosedXML как числовую

мы используем ClosedXML для преобразования объектов данных в электронные таблицы Excel для представления пользователю. Объект DataTable создается просто путем присвоения всех значений db (из NHibernate) строкам и последующего их форматирования, как показано ниже:

 //formattingEstimatedCost = Currency.SafeToString (Currency.Create (  n.EstimatedCost)),  

Затем мы устанавливаем тип столбца для типа свойства, то есть String во всех случаях.

Что происходит на выходе Лист Excel, поскольку этот столбец настроен для валюты, но имеет номер в виде текстового предупреждения, тогда он не будет отсортирован правильно.

Моя проблема в том, что, поскольку мы собираем все данные в DataTable, я у вас нет возможности правильно оформить столбцы ClosedXML. Есть ли быстрый способ сделать это, о котором я не думаю?

  public const string ExcelDataType = "application/vnd.openxmlformats-officedocument. spreadsheetml.sheet.main + xml  "; общедоступный статический MemoryStream GenerateExcelFileFromData (IEnumerable > вкладки, int colWidth = 100) {var workbook = new XLWorkbook {ColumnWidth = colWidth};  foreach (переменные, перечисляемые на вкладках) {workbook.Worksheets.Add (enumerable.Value, enumerable.Key);  }  

  общедоступная статическая таблица данных ConvertToDataTable  (IEnumerable  varlist, List  excludedColumns  , bool titleizeColumn = false) {var dtReturn = new DataTable (); //имена столбцов PropertyInfo [] oProps = null;  если (varlist == null) return dtReturn;  foreach (T rec в списке переменных) {//Используйте отражение, чтобы получить имена свойств, чтобы создать таблицу, Только в первый раз, остальные будут следовать if (oProps == null) {oProps = rec.GetType (). GetProperties ();  foreach (PropertyInfo pi в oProps) {if (excludedColumns.Contains (pi.Name)) {continue;  } var colType = pi.PropertyType;  dtReturn.Columns.Add (новый DataColumn (GetColumnName (pi, titleizeColumn), colType));  }} DataRow dr = dtReturn.NewRow ();  foreach (var pi in oProps.Where (pi =>! excludedColumns.Contains (pi.Name))) {попробуйте {dr [GetColumnName (pi, titleizeColumn)] = pi.GetValue (rec, null) ??  DBNull.Value;  } catch (ArgumentException) {dr [GetColumnName (pi, titleizeColumn)] = DBNull.Value;  }} dtReturn.Rows.Add (dr);  } return dtReturn;  

Значения валюты можно форматировать следующим образом:

  worksheet.Cell (rowIndex  , columnIndex) .Style.NumberFormat.Format = "0,00 $"; worksheet.Cell (rowIndex, columnIndex) .DataType = XLCellValues.Number;  

-1

  ws.Cell (ro, co) .Style.NumberFormat.Format = "[$  $ -en-US] #, ## 0.00 "; ws.Cell (ro, co) .DataType = XLDataType. Число;  

Улучшите этот ответ
отредактировано 10 января ’20 в 15:45
Machavity ♦
28.1k1717 золотых знаков7373 серебряных знака8989 бронзовых знаков
ответил 10 января ’20 в 15:42
  • 5
    Хотя этот код может решить вопрос, включая объяснение того, как и почему это решает проблему, действительно поможет улучшить качество вашего сообщения и, вероятно, приведет к увеличению числа голосов. Помните, что вы отвечаете на вопрос для будущих читателей, а не только для человека, который задает его сейчас. Измените свой ответ, чтобы добавить пояснения и указать, какие ограничения и предположения применяются. — Machavity ♦ 10 янв., 20:45
добавить комментарий |

  ws.Cell (ro, co) .Style.NumberFormat.Format = "[$$ - en-US  ] #, ## 0.00 "; ws.Cell (ro, co) .DataType = XLDataType.Number;  


Форматировать числа как валюту

Если вы хотите отображать числа как денежные значения, вы должны отформатировать эти числа как денежные. Для этого к ячейкам, которые вы хотите отформатировать, примените формат номера валюты или учета. Параметры форматирования чисел доступны на вкладке Главная в группе Число .

В этой статье

Форматировать числа как валюту

Удалить форматирование валюты

Что в чем разница между валютным и бухгалтерским форматами?

Создать шаблон книги с определенными настройками форматирования валюты

Форматировать числа как валюту

Вы можете отобразить число с символом валюты по умолчанию, выбрав ячейку или диапазон ячеек, а затем щелкнув Формат учетных чисел в группе Число на вкладке Главная . (Если вместо этого вы хотите применить формат валюты, выберите ячейки и нажмите Ctrl + Shift + $.)

Если вам нужен больший контроль над любым форматом или вы хотите изменить другие аспекты форматирования для выбора выполните следующие действия.

Выберите ячейки, которые хотите отформатировать

На вкладке Главная нажмите Панель запуска диалогового окна рядом с Число .

Совет: Вы также можете нажать Ctrl + 1, чтобы открыть диалоговое окно Формат ячеек поле.

В диалоговом окне Формат ячеек в списке Категория щелкните Валюта или Бухгалтерский учет .

В поле Символ щелкните нужный символ валюты.

Примечание. Если вы хотите отобразить денежное выражение без символа валюты, вы можете нажать Нет .

В Десятичные разряды введите необходимое количество десятичных знаков для числа. Например, чтобы отобразить 138 691 доллар вместо 138 690,63 доллара в ячейке введите 0 в поле Десятичные разряды .

При внесении изменений следите за числом в Поле Образец . В нем показано, как изменение десятичных разрядов повлияет на отображение числа.

В Отрицательные числа поле выберите стиль отображения y вы хотите использовать для отрицательных чисел. Если вам не нужны существующие параметры для отображения отрицательных чисел, вы можете создать свой собственный числовой формат. Дополнительные сведения о создании пользовательских форматов см. В разделе Создание или удаление пользовательского числового формата.

Примечание. Отрицательные числа недоступен для числового формата Бухгалтерский учет . Это потому, что стандартная практика бухгалтерского учета показывает отрицательные числа в круглых скобках.

Чтобы закрыть диалоговое окно Формат ячеек , нажмите ОК .

Если Excel отображает ##### в ячейке после того, как вы применили форматирование валюты к вашим данным, вероятно, ячейка не достаточно широкий, чтобы отображать данные. Чтобы увеличить ширину столбца, дважды щелкните правую границу столбца, содержащего ячейки с ошибкой ##### . Это автоматически изменяет размер столбца в соответствии с номером. Вы также можете перетаскивать правую границу, пока столбцы не станут нужного вам размера.

Вверху страницы

Удалить форматирование валюты

Если вы хотите удалить форматирование валюты, вы можете выполнить следующие действия, чтобы сбросить числовой формат.

  1. Выберите ячейки с денежным форматированием.

  2. На вкладке Главная в группе Число нажмите Общие .

    Ячейки, отформатированные в формате General , не имеют определенного числового формата.

Начало страницы

В чем разница между форматами валюты и бухгалтерского учета?

И валюта, и Форматы учета используются для отображения денежных значений. Разница между двумя форматами поясняется в следующей таблице..

Формат

Описание

Пример

Валюта

Когда вы применяете формат валюты к числу, символ валюты появляется рядом с первой цифрой в ячейке. Вы можете указать количество десятичных знаков, которые вы хотите использовать, хотите ли вы использовать разделитель тысяч и как вы хотите отображать отрицательные числа.

Совет: Чтобы быстро применить формат валюты, выберите ячейку или диапазон ячеек, которые вы хотите отформатировать, а затем нажмите Ctrl + Shift + $.

Формат

Описание

Пример

Бухгалтерский учет

Как и формат валюты, формат учета используется для денежных значений. Но этот формат выравнивает символы валюты и десятичные точки чисел в столбце. Кроме того, в формате учета нули отображаются в виде тире и отрицательных чисел в круглых скобках. Как и в формате валюты, вы можете указать, сколько десятичных знаков вы хотите и использовать ли разделитель тысяч. Вы не можете изменить отображение отрицательных чисел по умолчанию, если не создадите собственный числовой формат.

Совет: для быстрого применения формата учета , выберите ячейку или диапазон ячеек, которые вы хотите отформатировать. На вкладке Главная в группе Число нажмите Формат числа учетных записей . Если вы хотите отобразить символ валюты, отличный от символа по умолчанию, щелкните стрелку рядом с Формат числа бухгалтерского учета и выберите другой символ валюты.

К началу страницы

Создайте шаблон книги с конкретными настройками форматирования валюты

Если вы часто используете валюту форматирования в ваших книгах, вы можете сэкономить время, создав книгу, которая включает определенные параметры форматирования валюты, а затем сохраните эту книгу в качестве шаблона. Затем вы можете использовать этот шаблон для создания других книг.

  1. Создать книгу.

  2. Выберите рабочий лист или рабочие листы, для которых вы хотите изменить форматирование чисел по умолчанию.

    Как выбрать рабочие листы

    Чтобы выбрать

    Сделайте это

    Один лист

    Щелкните вкладка листа.

    Если вы не видите нужную вкладку, нажмите кнопки прокрутки вкладки, чтобы отобразить вкладку, а затем щелкните вкладку.

    Два или более соседних листа

    Щелкните вкладку для первого листа. Затем, удерживая нажатой клавишу Shift, щелкните вкладку для последнего листа, который вы хотите выбрать.

    Два или более несмежных листы

    Щелкните вкладку для первого листа. Затем, удерживая нажатой клавишу Ctrl, щелкните вкладки других листов, которые вы хотите выбрать.

    Все листы в книга

    Щелкните правой кнопкой мыши вкладку листа, а затем в контекстном меню выберите Выбрать все листы .

    Совет Когда выбрано несколько листов, отображается [Группа] в строке заголовка вверху листа. Чтобы отменить выбор нескольких листов в книге, щелкните любой невыделенный лист. Если невыделенный лист не отображается, щелкните правой кнопкой мыши вкладку выбранного листа и выберите Разгруппировать листы .

  3. Выберите определенные ячейки или столбцы, которые вы хотите отформатировать, а затем примените к ним форматирование валюты.

Внесите в книгу любые другие настройки, которые вам нравятся, а затем выполните следующие действия, чтобы сохранить ее как шаблон:

Сохранить книгу как шаблон

  1. Если вы сохраняете книгу в шаблон в первый раз, начните с установки расположение личных шаблонов по умолчанию :

    1. Нажмите Файл и затем нажмите Параметры .

    2. Нажмите Сохранить , а затем в разделе Сохранить книги введите путь к местоположению личных шаблонов в поле Местоположение личных шаблонов по умолчанию .

      Это путь обычно: C: Users Public Documents My Templates.

    3. Нажмите OK .

      Как только этот параметр установлен, все настраиваемые шаблоны Те, которые вы сохраняете в папке «Мои шаблоны», автоматически появляются в разделе Личные на странице Создать ( Файл > Новый ).

  2. Щелкните Файл , а затем нажмите Экспорт .

  3. В разделе Экспорт , нажмите Изменить тип файла .

  4. В книге В поле «Типы файлов » дважды щелкните Шаблон ..

  5. В поле Имя файла введите имя, которое вы хотите использовать для шаблона.

  6. Нажмите Сохранить , а затем закройте шаблон.

Создать книгу на основе шаблона

  1. Щелкните Файл , а затем нажмите Создать .

  2. Нажмите Личное .

  3. Дважды щелкните только что созданный шаблон.

    Excel создаст новую книгу на основе вашего шаблона.

Начало страницы

Оцените статью
logicle.ru
Добавить комментарий