联系人导出为CSV文件自动设置的手机号码成为集 [英] Exporting Contacts into csv file automatically format mobile numbers into scientific

查看:236
本文介绍了联系人导出为CSV文件自动设置的手机号码成为集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

到我的项目时,即时通讯联系人导出为CSV文件自动设置的手机号码开始用91到科学的。



例如
手机没有进导出数据



919433454320



手机号码为CSV文件时,科学的格式



9.194E + 11



格式的单元格后,与0小数号码



9194.3亿



有关使用Microsoft.Office.Interop.Excel.Application



工作簿
导出联系人到我的项目我在这里是我的代码

  Microsoft.Office.Interop.Excel.Application应用=新Microsoft.Office.Interop.Excel.Application(); 
app.Visible = FALSE;
工作簿WB = app.Workbooks.Add();
表WS =(表)wb.Worksheets.get_Item(1);
对象[,] RAWDATA =新对象[DataTable.Rows.Count + 1,DataTable.Columns.Count]

为(INT COL = 0;&山坳下,DataTable.Columns.Count;西++)
{
RAWDATA [0,列] = DataTable.Columns [COL] .ColumnName ;
}

为(INT COL = 0;&山坳下,DataTable.Columns.Count;西++)
{
为(INT行= 0;&行LT; DataTable.Rows.Count;排++)
{
RAWDATA [排+ 1,列] = DataTable.Rows [行] .ItemArray [COL];
}
}
的String [] callchar =新的String [] {系列我的Excel工作表(例如,从A到Bz的};
串excelRange = callchar [0] +1+ callchar [DataTable.Columns.Count - 1] +(DataTable.Rows.Count + 1)的ToString();
范围R = ws.Cells.EntireColumn.NumberFormat;
ws.get_Range(excelRange,Type.Missing).Value2 = RAWDATA;
wb.SaveAs(文件名:文件路径,FILEFORMAT:XlFileFormat.xlCSVWindows,ReadOnlyRecommended:假);
wb.Close();
app.Quit();


解决方案

您可以使用后期绑定导出数据:

  //尝试打开的Excel 
Thread.CurrentThread.CurrentCulture =新的CultureInfo( EN-US);
型typeExcelApplication = Type.GetTypeFromProgID(Excel.Application);
如果(typeExcelApplication == NULL)
抛出新的异常(未安装Excel文件(Excel中。应用未找到));
对象objExcelApplication = Activator.CreateInstance(typeExcelApplication);
对象objWorkBooks = objExcelApplication.GetType()InvokeMember(工作簿,BindingFlags.GetProperty,空,objExcelApplication,NULL);
对象objWorkBook = objWorkBooks.GetType()InvokeMember(添加,BindingFlags.InvokeMethod,空,objWorkBooks,NULL);
对象objWorkSheet = objWorkBook.GetType()InvokeMember(ActiveSheet,BindingFlags.GetProperty,空,objWorkBook,NULL);

//填写数据(把obj对象到单元格[1,1])$ ​​B $ B objWorkSheet.GetType()。InvokeMember(细胞,BindingFlags.SetProperty,空,objWorkSheet,新对象[] {1,1,物镜});

//显示练成
typeExcelApplication.InvokeMember(可见,BindingFlags.SetProperty,空,objExcelApplication,新的对象[] {真});
对Marshal.ReleaseComObject(objExcelApplication);



Excel中应正确处理类型,因此,如果您提供 OBJ 字符串 - 它不会尝试从它使数(科学)


Into my project when i m exporting Contacts into csv file automatically format mobile numbers starts with 91 into scientific.

e.g mobile no into exporting data

919433454320

mobile no into csv file when scientific format

9.194E+11

after format cell as number with 0 decimal places

919430000000

For exporting contacts into my project i m using Microsoft.Office.Interop.Excel.Application

Workbook here is my code

  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();

解决方案

You can use late binding to export data:

            // 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 should properly process types, so if you supply obj as a string - it will not try to make a number (scientific?) from it.

这篇关于联系人导出为CSV文件自动设置的手机号码成为集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆