2010-08-06 4 views
2

NPOI 라이브러리를 사용하여 Excel에서 이중 및 숫자 형식 셀을 만들려고합니다. 나는 엑셀 숫자에서 NPOI Excel 숫자 형식이 asp.net의 Excel 시트에 표시되지 않습니다.

Dim cell As HSSFCell = row.CreateCell(j) 
cell.SetCellValue(Double.Parse(dr(col).ToString)) 

잘 정렬되어

과 같은 코드를 사용하지만 "일반"에서이 표시되어 형식을 검사 할 때

alt text

는 내가

Dim cell As HSSFCell = row.CreateCell(j) 
cell.SetCellValue(Double.Parse(dr(col).ToString)) 
Dim cellStyle As HSSFCellStyle = hssfworkbook.CreateCellStyle 
cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("#,#0.0") 
cell.CellStyle = cellStyle 
아래 좋아하는 내 코드를 변경

다음 파일을 여는 동안 오류가 발생하고 열려면 너무 오래 걸립니다. 그러나 "숫자"에 표시되는 Excel 형식은 아래와 같이 같습니다.

alt text

이 문제를 어떻게 해결 하는가?

+0

당신이 NPOI 1.6 이상을 사용하고이 스타일? – James

+0

1.2.3은 내가 말할 수있는 한 최신 버전입니다. http://npoi.codeplex.com/releases/view/49524 – MikeWyatt

답변

4

this에서 각 셀의 cellStyle 개체를 만들고 있습니까? 그렇다면 그렇게하지 마십시오. 셀을 만들기 전에 몇 가지 스타일 만 작성한 다음이 미리 정의 된 스타일을 작성한 셀에 적용하십시오.

0

토끼는 Excel 문서 USING NPOI에서 이중 형식을 만드는 간단한 방법입니다.

//make NUMERIC Format in Excel Document // Author: Akavrelishvili 
    var eRow = sheet.CreateRow(rowIndex); //create new Row , rowIndex - it's integer, like : 1,2,3 
    eRow.CreateCell(0).SetCellValue(row["ProvidName"].ToString()); //create cell and set string value 

    double Amount = Convert.ToDouble(row["Amount"].ToString()); //convert string to double 
    eRow.CreateCell(1).SetCellValue(Amount); // create cell and set double value. 

이것은 많은 프로젝트에 사용되었습니다.

Excel에서 DateTime 형식을 삽입하는 것이 매우 어렵습니다. 인터넷에 좋은 예가 없으며 사람들이 올바른 방식으로이를 수행하는 데 도움이된다고 생각합니다. 난 당신에게 코드의 예를 보여

 //make Date Time Format in Excel Document // Author: Akavrelishvili 

VAR eRow = sheet.CreateRow (rowIndex에를); // 새로운 행 만들기 // rowIndex - 1,2,3

+0

workBook.CreateDataFormat(). GetFormat(); GetBuiltinFormat() – kmdsax

+0

나는 정확한 DateTime 형식을 만들기 위해이 방법을 사용하는 솔루션을 마쳤습니다.이 순간 솔루션은 문제없이 작동합니다. 나는 이것이 이것이 최선의 방법이라고 생각한다. –

0

너무 많은 다른 셀 스타일을 수정하려면 실행중인 루프 외부의 모든 스타일을 선언하십시오.

나는 당신을 'j'가 열거 자라는 것을 당신에게 알리고 있습니다. 그래서 당신이 가지고있는 것을 당신을 위해 수정 된 형식으로 떨어 뜨릴 것입니다.

Dim cellStyle As HSSFCellStyle = hssfworkbook.CreateCellStyle 
cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("#,#0.0") 

For col = 0 To ColoumCounter 
    For j = 0 To Counter 
    Dim cell As HSSFCell = row.CreateCell(j) 
    cell.SetCellValue(Double.Parse(dr(col).ToString)) 
    cell.CellStyle = cellStyle 
    Next 
Next 

"새로운"스타일의 수를 제한하여 조금 더 좋아질 것입니다.

0

다음 스타일을 만들기 있지만 열

ICellStyle _TextCellStyle = wb1.CreateCellStyle(); 

_TextCellStyle.DataFormat = wb1.CreateDataFormat().GetFormat("@"); 
sheet.SetDefaultColumnStyle(2, _TextCellStyle); 
+0

안녕하세요. https://stackoverflow.com/tour에서 둘러보기를 방문하십시오. –

관련 문제