6

Excel シートを動的に作成し、同じシートに値を挿入していますが、一部のセルの値が間違った形式で挿入されています。ここに画像の説明を入力 以下は、選択したセルのExcel シートの値が0002-9343である必要がありますが、 Feb-43として挿入されています。これは、Excel シートのその列 (列 D) の形式が間違っているためです。データを入力する前に、列 D 全体 (見出し D「data2」の下にあるすべてのセル) を「テキスト形式」に変更する必要があります。以下は、Excelシートを作成してデータを挿入するためのコードです

excel = new Application();
            excel.Visible = false;
            wb = (_Workbook)(excel.Workbooks.Add(System.Reflection.Missing.Value));
            sheet = wb.Sheets.Add();
            sheet.Name = "TestSheet1";
            sheet.Cells[1, "A"].Value2 = "Id";
            sheet.Cells[1, "B"].Value2 = "Name";
            sheet.Cells[1, "C"].Value2 = "Data1";
            sheet.Cells[1, "D"].Value2 = "Data2";
            sheet.Cells[1, "E"].Value2 = "Data3";

            for (int i = 0; i < 10; i++)
            {
                    id = i;
                    result = object;
                    data = JsonConvert.DeserializeObject(result);

        name  = (data != null) ? data.name : string.Empty;
                    data1 = (data != null) ? data.data1 : string.Empty;
                    data2 = (data != null) ? data.data2 : string.Empty;
                    data3 = (data != null) ? data.data3 : string.Empty;

                    sheet.Cells[i + 2, "A"].Value2 = name;  
                    sheet.Cells[i + 2, "B"].Value2 = data1; 
                    sheet.Cells[i + 2, "C"].Value2 = data2; 
                    sheet.Cells[i + 2, "D"].Value2 = data3;
            }
            string ExcelPath = Some_path;
            wb.SaveAsExcelPath,XlFileFormat.xlWorkbookNormal, null, null, false, false, XlSaveAsAccessMode.xlShared, false, false, null, null, null);
            wb.Close(true);
            excel.Quit();

ここで、ループの前に、列 D の下のセルの形式をテキスト形式に変更する必要があります。c# のコードから同じことを行うには?

4

3 に答える 3

2

これはあなたの質問に対する答えではありませんが、Interop 経由で Excel を使用する代わりに、Open XML Api を使用することをお勧めします。そこで、スプレッドシートに追加するセルのデータ型を定義できます。

Cell c = new Cell();
c.DataType = CellValues.InlineString;
于 2013-04-04T08:19:57.333 に答える