2009-09-24 3 views
2

JExcelApi으로 스프레드 시트를 쓰고 있습니다.수식 셀의 JExcelApi 통화 형식 파일 오류

화폐 서식을 적용하려는 두 개의 셀이 있습니다. API를 읽으면서 필자는 jxl.write.NumberFormat을 발견했다. 내 응용 프로그램에서 나는이 작성했습니다 :

NumberFormat currency = new NumberFormat(NumberFormat.CURRENCY_DOLLAR); 
WritableCellFormat currencyFormat = new WritableCellFormat(currency); 

cells.add(new Formula(col, row, myFormula, currencyFormat)); 

COL 및 행에 쓸 수있는 열과 행입니다. myFormula는 작성할 수식입니다. 하나의 AVERAGE()와 하나의 SUM()이 있으며 각각은 다른 셀에 쓰여집니다.

for (WritableCell cell : cells) { 
    ws.addCell(cell); 
} 

(이 그 주위에 try/catch 블록은, 그러나 그것은 순간에 irrelavent입니다.)

편집 : : WS는 WritableSheet을 얻을 수 세포는 다음과 같이 스프레드 시트에 writtten되는 ArrayList에있다 WritableWorkbook.getSheet (String name)를 사용합니다. ws에 추가 된 내용은 모두 문제없이 작성됩니다.

파일을 성공적으로 쓰지만 열 때 "파일 오류. 일부 숫자 형식이 손실되었을 수 있습니다."라는 메시지가 나타납니다. 위에서 포맷 한 셀은 Excel 파일에서 포맷되지 않았습니다.

Microsoft Excel 2003 SP3 및 JExcelApi 2.6.10을 사용하고 있습니다.

아무도 도와 줄 수 있습니까? 미리 감사드립니다.

답변

0

통화 형식이 쓰여지지 않은 것으로 보입니다. 먼저 수식 셀을 만든 다음 통화 형식으로 포맷 할 수 있습니다. 희망이 도움이 될 수 있습니다.

+0

행운을 빌어 요 - "파일 오류. 일부 숫자 형식이 손실되었을 수 있습니다." 내가 스프레드 시트를 열 때. 형식이 쓰여지고 있지만 Excel에서 제대로 읽을 수 없습니다. 어쨌든 고마워 :) –

1
NumberFormat currencyFormat = new NumberFormat(NumberFormat.CURRENCY_DOLLAR + " ###,###.00", NumberFormat.COMPLEX_FORMAT); 
WritableCellFormat lCurrencyFormat = new WritableCellFormat(currencyFormat); 
Number currency = new Number(j, cnt, Double.parseDouble(lStr), lCurrencyFormat); 
lSheet.addCell(currency); 

사용이 확실히 당신의 목적을 해결할 것입니다!