2013-10-04 2 views
1

데이터 테이블에서 데이터를 적절한 출력으로 Excel 파일로 내보내는 방법. 나는 첫 번째 행의 Excel 레코드가 헤더이어야하고 디스플레이 데이터는 값을 반올림하는 대신 모든 값을 표시해야 함을 의미합니다. ** (데이터 테이블) ldt_Temp, as_OutputDir (수출 DIR)데이터를 엑셀로 내보내는 방법

object misValue = System.Reflection.Missing.Value; 
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); 
app.Visible = false; 
Microsoft.Office.Interop.Excel.Workbook wb = app.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet); 
Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet; 
// Headers. 
for (int i = 0; i < ldt_Temp.Columns.Count; i++) 
{ 
    ws.Cells[1, i + 1] = ldt_Temp.Columns[i].ColumnName; 
} 
// Content. 
for (int i = 0; i < ldt_Temp.Rows.Count; i++) 
{ 
for (int j = 0; j < ldt_Temp.Columns.Count; j++) 
    { 
    ws.Cells[i + 2, j + 1] = ldt_Temp.Rows[i][j].ToString(); 
    } 
} 
ws.Name = ldt_Temp.TableName; 
wb.SaveAs(as_OutputDir, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
wb.Close(true, misValue, misValue); 
app.Quit(); 

enter image description here

답변

0

행 1은 이미 열 레이블에 ... 당신의 화살표가 헤더를 것으로 보인다 도와주세요. 'A'가 'Site_Site_id'가되기를 원하십니까? 그것이 얼마나 효과적이지 않습니다.

정밀도를 위해 마우스 오른쪽 버튼을 클릭하고 포맷을 선택하십시오. 이제 십진수 정밀도를 원하는 모든 것으로 변경하십시오.

enter image description here


또한 모든 셀을 선택하고 도구 모음 단추를 사용 할 수 있습니다

enter image description here


당신은 코드에서이 방법을 수행하려고 할 수 있습니다

// Content. 
for (int i = 0; i < ldt_Temp.Rows.Count; i++) 
{ 
for (int j = 0; j < ldt_Temp.Columns.Count; j++) 
    { 
    ws.Cells[i + 2, j + 1] = ldt_Temp.Rows[i][j].ToString(); 
    ws.Cells[i + 2, j + 1].NumberFormat = "0.00000000000000000" 
    } 
} 
+0

가 이런 식으로 일 니스가 될 수 루프 각 세포를 각 세포에 대한 각각의 숫자 형식을 재 배열 자리의 길이를 얻고 형식을 만들 수있는 방법을 찾아 – Hero

0

와 나는 동적

string ls_Test = cells value 
string part = ls_Test.Substring(0, ls_Test.IndexOf('.')); 
string ls_FormatDeicmal = ls_Test.Substring(part.Length + 1, ls_Test.Length - (part.Length + 1)); 
string ls_DigiFormat = ""; 
for (int f = 0; f < ls_FormatDeicmal.Length; f++) 
{ 
    ls_DigiFormat += "0"; 
} 
ls_DigiFormat = "0." + ls_DigiFormat; // 0.000000000, 0.00, 0.00000 
ws.Cells[i + 2, j + 1].NumberFormat = ls_DigiFormat;