2016-09-19 11 views
0

Я создаю файл Excel с использованием ColdFusion и POI Workbook. Файл создан отлично, однако у меня есть ячейки, которые содержат числовые значения и должны быть сохранены в качестве номеров для функций SUM и других функций для правильной работы.ColdFusion - POI Формат рабочей книги Excel как номер

Я хочу вызвать код после того, как данные были добавлены для листа excel, который будет в основном зацикливаться на данных, а если значение является числовым, установите формат данных как числовой. Таким образом, когда я открываю файл Excel, я могу выполнить SUM или что-то еще в этом столбце данных.

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

// Create our dataFormat object 
df = poiWorkbook.createDataFormat(); 
// Create our new style 
formatNumber = poiWorkbook.createCellStyle(); 
formatNumber.setFillPattern(formatEvenRowRightAlignStyle.SOLID_FOREGROUND); 
formatNumber.setAlignment(formatNumber.ALIGN_RIGHT); 
XSSFColor = createObject("java", "org.apache.poi.xssf.usermodel.XSSFColor"); 
formatNumber.setFillForegroundColor(XSSFColor.init(Color.decode("##EBEBEB")));  
formatNumber.setDataFormat(df.getFormat("0.00")); 
// Loop over the data and apply the format 
for (x=0;x<rowCount;x++) { 
    for (y=0;y<colCount;y++) { 
     poiSheet.getRow(x).getCell(y).setCellStyle(formatNumber);   
    } 
} 

enter image description here

+0

* код вызова после того, как данные были добавлены * Любая причина, почему? Это возможно, но было бы проще и с меньшей погрешностью подвергать форматированию при заполнении листа. – Leigh

+0

@Leigh - причина в том, что я создаю CF-запрос со всеми моими данными, а затем добавляю его с помощью метода SpreadsheetAddRows (лист, запрос). – Phil

+0

@Leigh - после того, как я добавлю все данные, я затем перехожу к рабочей книге и при необходимости применяю форматирование – Phil

ответ

1

(Повышен от комментариев ...)

код вызова после того, как данные были добавлены

Любая причина, почему? В то время как это возможно, он проще и меньше подвержен ошибкам, чтобы форматировать при заполнении листа. Предполагая, что тип данных столбца запроса является числовым (не varchar или что-то еще), вы должны иметь возможность вызвать SpreadsheetFormatColumn для этого столбца после добавления данных запроса.

Сказав это, факт, что вы получаете «Номер, сохраненный как текст». Предупреждения заставляет задуматься о типе данных вашего столбца запроса. IIRC, более поздние версии CF должны определять числовые столбцы при использовании SpreadsheetAddRows и применять цифровой формат к этим столбцам автоматически. Возможно ли, что ваш столбец запроса отформатирован как строка вместо некоторого числового типа? Это объясняет результаты. Решение состоит в том, чтобы вывести столбец в числовой тип внутри запроса db.