# 最近得了一份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这个文件就是安卓备份的电话号码的。
你只需文本打开就是了。