简单工具-较为自动地添加电话号码

本文介绍了一种将Excel格式的联系人信息转换为适用于安卓手机的VCard格式的方法。通过C#编程实现了这一转换过程,并详细展示了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 最近得了一份excel的电话薄,老是以麻烦的缘故,一直搁置着。

# 最近实在是百无聊赖,于是开始折腾这个了。

# 功能很简单。

# Program:

#     实现把一定格式的excel文档转化为安卓手机存电话的格式;

#          我的手机的格式

#           BEGIN:VCARD
#          VERSION:3.0
#          FN:名字
#          N:;名字;;;
#          TEL;TYPE=CELL:Tel-Number
#          CATEGORIES:分类
#          NOTE:注释信息
#          X-WDJ-STARRED:0
#          END:VCARD

#     我得到的电话薄的格式如下

序号姓名联系电话工作方向暂居地
1名字Tel-Number******
2名字Tel-Number******

#  说明:

# 很简单,就只是格式独处excel单元格的信息,以安卓电话薄的格式保存在txt文件中


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;
using System.IO;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            object filename = "C:\\通讯录.xls";
            object MissingValue = Type.Missing;
            //string strKeyWord = "";
            Excel.Application ep = new Excel.ApplicationClass();
            Excel.Workbook ew = ep.Workbooks.Open(filename.ToString(),
                MissingValue, MissingValue, MissingValue);

            Excel.Worksheet ews;
            int iEWSCnt = ew.Worksheets.Count;
            int i = 0;//, j = 0;
            FileStream fs = new FileStream("D:\\test.txt", FileMode.OpenOrCreate, FileAccess.Write);
            //初始化写入流对象,指定要写入的流,编码方式
            StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);

            //Excel.Range oRange;
            //object oText = strKeyWord.Trim().ToUpper();
            iEWSCnt = 1; // 111
            for (i = 1; i <= iEWSCnt; i++)
            {
                ews = null;
                ews = (Excel.Worksheet)ew.Worksheets[i];
                //oRange = null;
                //(Excel.Range)oRange = ((Excel.Range)ews.UsedRange)
                /*
                ((Range)ews.Cells[1, 1]).EntireColumn.ColumnWidth = 1.88;
                ((Range)ews.Cells[2, 2]).EntireColumn.ColumnWidth = 3.13;
                ((Range)ews.Cells[3, 3]).EntireColumn.ColumnWidth = 15.33;
                ((Range)ews.Cells[4, 4]).EntireColumn.ColumnWidth = 8.63;
                ((Range)ews.Cells[5, 5]).EntireColumn.ColumnWidth = 4.88;
                ((Range)ews.Cells[6, 6]).EntireColumn.ColumnWidth = 4.88;
                ((Range)ews.Cells[7, 7]).EntireColumn.ColumnWidth = 4.88;
                ((Range)ews.Cells[8, 8]).EntireColumn.ColumnWidth = 3.13;
                ((Range)ews.Cells[9, 9]).EntireColumn.ColumnWidth = 4.88;
                ((Range)ews.Cells[10, 10]).EntireColumn.ColumnWidth = 3.13;
                ((Range)ews.Cells[11, 11]).EntireColumn.ColumnWidth = 5.38;
                ((Range)ews.Cells[12, 12]).EntireColumn.ColumnWidth = 3.13;
                ((Range)ews.Cells[13, 13]).EntireColumn.ColumnWidth = 2.63;
                ((Range)ews.Cells[14, 14]).EntireColumn.ColumnWidth = 3.25;
                ((Range)ews.Cells[15, 15]).EntireColumn.ColumnWidth = 1.25;
                ((Range)ews.Cells[16, 16]).EntireColumn.ColumnWidth = 3.25;
                ((Range)ews.Cells[17, 17]).EntireColumn.ColumnWidth = 1.88;
                 */
                Microsoft.Office.Interop.Excel.Range range = ews.get_Range("A1", "E64");
                System.Object[,] o = (System.Object[,])range.Value2;
                
                for (int row = 3; row <= 61; row++)
                {
                    sw.WriteLine("BEGIN:VCARD");
                    sw.WriteLine("VERSION:3.0");
                    for (int col = 2; col <= 4; col++)
                    {
                        switch (col)
                        {
                            case 2:
                            sw.WriteLine("FN:" + o[row, col].ToString());
                            sw.WriteLine("N:;" + o[row, col].ToString() + ";;;");
                            break;
                            case 3:
                            sw.WriteLine("TEL;TYPE=CELL:" + o[row, col].ToString());
                            sw.WriteLine("CATEGORIES:高中");
                            break;
                            case 4:
                            sw.WriteLine("NOTE:" + o[row, col].ToString() + ";" + o[row, (col + 1)].ToString());
                            break;
//                             case 5:
//                             strVariable += o[row, col].ToString();
//                             strVariable += "\n";
//                             break;
                        }
                    }
                    sw.WriteLine("X-WDJ-STARRED:0");
                    sw.WriteLine("END:VCARD");
                }

                
            }
            ew.Save();
            ew.Close();
            sw.Close();
            fs.Close();
        }
    }
}

交流啊。。。

对了,刚才忘了说了。生成的数据自己再复制到contact.vcf这个文件就是安卓备份的电话号码的。

你只需文本打开就是了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值