2011-09-28 6 views
18

DataTableからExcelスプレッドシートに数値を書きますが、数値自体が5桁未満の場合、これらの数値はすべて5桁で先行する0です(例えば、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を参照してください。質問の試合ながら、それはサードパーティのライブラリに依存していないので、ここの答えはより良いIMHOです。 –

+0

うん、知らなかったよ – katit

答えて

24

SomeRange.NumberFormat = "@";のいずれかを入力するか、値の前に'と入力してセルに書き込むと、Excelで数値格納されたテキストとして扱われ、視覚的な手掛かりが得られます。

+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

//コード。わずかな変更に加えて、単一シートのループを削除します。

//パスしたExcelファイルが保存されて

文字列ResultsFilePath = @ "C:\ Users \ユーザー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); 
関連する問題