Числовое поле получилось как текст в Excel, SSRS

В моих отчетах SSRS одно из полей использует это выражение, где поле является числовым полем. Я хочу видеть пустое поле, если значение 0.

=IIf(Fields!PERIOD02_VALUE.Value <> 0,Fields!PERIOD02_VALUE.Value ,"")

В экспортированной версии Excel это поле считается текстом, а не числом.

Есть ли другой способ сделать это со стороны SSRS?

Ответ 1

У меня была эта проблема. Некоторые ячейки будут текстовыми и другими номерами - все с одинаковой строкой форматирования. Разрешение заключается в умножении выражения ячеек на 1.000 (1 не работает!) - это заставляет SSRS форматировать ячейку как число. например; (ваше выражение здесь) * 1.000

Ответ 2

Excel распознает это поле как текст, потому что вы выводите пустую строку всякий раз, когда поле равно 0.

Вы можете попробовать это, чтобы вывести нулевое значение вместо пустой строки:

=IIf(Fields!PERIOD02_VALUE.Value <> 0,Fields!PERIOD02_VALUE.Value,  Nothing)

Это не гарантирует работу, однако, поскольку я, кажется, помню, что Excel предполагает, что поле является типом того, что находится в первой строке данных.

Ответ 3

У меня была эта проблема в экспорте excel и она была решена с помощью CLng для целых чисел и функции CDbl для десятичных знаков.

= CLng (Fields! Qty.Value)

Это гарантирует, что ячейка excel будет числовой и чище, чем поля! Qty.Value * 1.000

Ответ 4

Проблема в том, что ваш оператор IIF заканчивается пустой строкой, "". Если вы измените это значение на ноль, оно будет работать как положено:

=IIf(Fields!PERIOD02_VALUE.Value <> 0,Fields!PERIOD02_VALUE.Value, 0)

Вместо...

=IIf(Fields!PERIOD02_VALUE.Value <> 0,Fields!PERIOD02_VALUE.Value, "")

Ответ 5

Ниже приведены 3 разных решения для 3 различных сбоев:
Значение 1

1234
пустая ячейка
1234

Решение 2

=IIF(IsNumeric(Fields!TEST.Value.ToString()), CDBL(IIF(IsNumeric(Fields!TEST.Value.ToString()), Fields!TEST.Value.ToString(), "0")), " ")


Значение 2

1234
Null
345
null

Решение 2

=IIF(IsNumeric(Fields!TEST.Value.ToString()), CDBL(IIF(IsNumeric(Fields!TEST.Value.ToString()), Fields!TEST.Value.ToString(), "0")), "NULL")


Значение 3

1234
Null
345
N/A
550
TBA
440
599
НЕ ДЕЙСТВУЮЩЕЕ

Решение 3

=IIF(IsNumeric(Fields!TEST.Value.ToString()), CDBL(IIF(IsNumeric(Fields!TEST.Value.ToString()), Fields!TEST.Value.ToString(), "0")), Fields!TEST.Value.ToString()),