2011-09-28 6 views
18

DataTable에서 Excel 스프레드 시트에 숫자를 쓰고 있으며 숫자 자체가 5 자리 미만인 경우 앞에 0이 붙은이 숫자는 모두 5 자리 길이입니다 (따라서 395는 예를 들어 00395로 저장됩니다).C# Excel Interop : 셀을 값으로 텍스트 형식으로 서식 지정하는 방법

이 숫자를 Excel에 입력하면 (C# 사용) 숫자로 저장하고 앞의 0을 제거합니다. 숫자가 아닌 텍스트로 저장되는 값을 얻기 위해 C#에서 셀을 포맷 할 수있는 방법이 있습니까?

+2

참조하십시오이 답변 http://stackoverflow.com/questions/2067926/format-an-excel-column-or-cell-as-text-in-c – katit

+1

@Katit : 질문 경기 동안 , 제 3 자 라이브러리에 의존하지 않기 때문에 여기에 대한 대답은 IMHO가 더 좋습니다. –

+0

그래, 그 통지하지 않았다 – katit

답변

24

SomeRange.NumberFormat = "@"; 또는 값 앞에 '을 붙이고 셀에 쓰면 엑셀이 숫자로 저장된 텍스트로 처리하고 시각적 큐를 제공합니다.

+0

고마워, 그게 해결 됐어! 매우 감사. – Closeratio

2

이 답변은 우리 회사의 소프트웨어 중 하나의 솔루션에 대한 주요 문제점을 해결 했으므로 표시된 값을 검색해야했지만 일단 새 시트로 설정하면 숫자로 삽입되었습니다. 간단한 해결책. 나는 아직 투표를 끝내지 못했다. [1] 통합 문서의 모든 시트의 특정 열을 포맷 할 경우 텍스트를

ExcelWorksheet.Columns[1].NumberFormat = "@"; 

//을 할 열 번호입니다

for (int h = 1; h <= 1; h++) 
{ 
    int col = lastColl(sheets); 
    for (int r = 1; r <= src.Count; r++) 
    { 
     sheets.Cells[r, col + 1] = "'"+src.Cells[r, h].Text.ToString().Trim(); 
    } 
} 
0

// - 아래 사용 암호. 약간의 변경과 함께 단일 시트에 대한 루프를 제거하십시오.

// 경로했다 엑셀 파일이 유지

문자열 ResultsFilePath = @ "C : \ 사용자 \ krakhil \ 바탕 화면 \ TGUW EXCEL \ TEST";

Excel.Application ExcelApp = new Excel.Application(); 
    Excel.Workbook ExcelWorkbook = ExcelApp.Workbooks.Open(ResultsFilePath); 
    ExcelApp.Visible = true; 

    //Looping through all available sheets 
    foreach (Excel.Worksheet ExcelWorksheet in ExcelWorkbook.Sheets) 
    {     
     //Selecting the worksheet where we want to perform action 
     ExcelWorksheet.Select(Type.Missing); 
     ExcelWorksheet.Columns[1].NumberFormat = "@"; 
    } 

    //saving excel file using Interop 
    ExcelWorkbook.Save(); 

    //closing file and releasing resources 
    ExcelWorkbook.Close(Type.Missing, Type.Missing, Type.Missing); 
    Marshal.FinalReleaseComObject(ExcelWorkbook); 
    ExcelApp.Quit(); 
    Marshal.FinalReleaseComObject(ExcelApp);