1

私のプロジェクトでは、連絡先をcsvファイルにエクスポートすると、91で始まる携帯電話番号が科学的に自動的にフォーマットされます。

例: mobile no をデータのエクスポートに

919433454320

科学的形式の場合、モバイルは csv ファイルに保存されません

9.194E+11

セルを小数点以下 0 桁の数値としてフォーマットした後

919430000000

Microsoft.Office.Interop.Excel.Application を使用して連絡先をプロジェクトにエクスポートする場合

ここのワークブックは私のコードです

  Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
            app.Visible = false;
            Workbook wb = app.Workbooks.Add();
            Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);
            object[,] rawData = new object[DataTable.Rows.Count + 1, DataTable.Columns.Count];

            for (int col = 0; col < DataTable.Columns.Count; col++)
            {
                rawData[0, col] = DataTable.Columns[col].ColumnName;
            }

            for (int col = 0; col < DataTable.Columns.Count; col++)
            {
                for (int row = 0; row < DataTable.Rows.Count; row++)
                {
                    rawData[row + 1, col] = DataTable.Rows[row].ItemArray[col];
                }
            }
            string[] callchar = new string[]  {"range of my excel sheet (e.g from a to Bz"};
            string excelRange = callchar[0] + "1:" + callchar[DataTable.Columns.Count - 1] + (DataTable.Rows.Count + 1).ToString();
            Range r = ws.Cells.EntireColumn.NumberFormat;
            ws.get_Range(excelRange, Type.Missing).Value2 = rawData;
            wb.SaveAs(Filename: FilePath, FileFormat: XlFileFormat.xlCSVWindows, ReadOnlyRecommended: false);
            wb.Close();
            app.Quit();
4

1 に答える 1

0

遅延バインディングを使用してデータをエクスポートできます。

            // try to open excel
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
            Type typeExcelApplication = Type.GetTypeFromProgID("Excel.Application");
            if (typeExcelApplication == null)
                throw new Exception("Excel is not installed (Excel.Application is not found)");
            object objExcelApplication = Activator.CreateInstance(typeExcelApplication);
            object objWorkBooks = objExcelApplication.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, objExcelApplication, null);
            object objWorkBook = objWorkBooks.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, objWorkBooks, null);
            object objWorkSheet = objWorkBook.GetType().InvokeMember("ActiveSheet", BindingFlags.GetProperty, null, objWorkBook, null);

            // fill data (put object obj into cell [1,1])
            objWorkSheet.GetType().InvokeMember("Cells", BindingFlags.SetProperty, null, objWorkSheet, new object[] { 1, 1, obj});

            // display excel
            typeExcelApplication.InvokeMember("Visible", BindingFlags.SetProperty, null, objExcelApplication, new object[] { true });
            Marshal.ReleaseComObject(objExcelApplication);

Excel は型を適切に処理する必要があるためobj、 - として指定するstringと、それから数値 (科学的?) を作成しようとしません。

于 2013-02-22T13:35:07.507 に答える