标签:
背景:
领导不知道在做什么项目,前天给了我们一个200行以上的表格,让我们把里面的内容,用switch case写出来。
我和同事分工,大概每人写了100多个,至少写了半小时以上,写完之后,交换检查,想想,刚刚写完100多个switch case,又要再去检查100多个,
晕了,真是头晕,果然,两人都有错误,完成这个任何用了2小时左右。
今天领导不在,昨天又给我们安排 任务,又是一个这样的表格,用swtich case写出来。
当时我们就醉了,好吧,不过我们也没说什么。今天上午上班来了之后,先把其它任务完成。接着做这个。
我一看,这次可不是200多行,足足有700,800行。意味着要写700多个case: break;
我一想,连写带检查,怎么也得小半天了,这样写下去可不个办法。
于是我跟同事商量了下,问他可不可以写个程序直接生成。他说可以呀,但是chm格式的文件没办法读啊。
于是我把chm格式的表格,复制,粘贴到了,excel中。他说可以了,这就好办了,但是我是一个菜鸟,什么都不会,他说让我写,说这个任务给我有挑战性,他可以给我提供思路,后来我想了想,按自己的方式,将excel转成了文本文件(以逗号分格),将文件读到了c#程序中。使用字符串拼接,很简单,很顺序了就写完了700多个case.
后来看了看我同事的写法,他是直接读的excel,于是我又自己试了试,写了一个直接从excel的程序,其实都很简单。
下面付上代码 :
static void Main(string[] args) { //ReadTxt(); ReadExcel(); } private static void ReadExcel() { StringBuilder sb = new StringBuilder(); string stringCase = @"case {0}: Code = ""{1}""; Info = ""{2}""; break; "; string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:/tmp.xls;Extended Properties=‘Excel 8.0;HDR=NO;IMEX=1‘;"; //连接字符串 OleDbConnection Conn = new OleDbConnection(ConnStr); Conn.Open(); string sql = string.Format("select * from [{0}$]", "Sheet1"); //Sheet1为工作表的名称 DataSet ds = new DataSet(); OleDbDataAdapter da = new OleDbDataAdapter(sql, Conn); da.Fill(ds); //读取数据填充到DataSet foreach (DataRow row in ds.Tables[0].Rows) //使用Table循环 { string caseTmp = ""; caseTmp = String.Format(stringCase, row[1].ToString(), row[0].ToString(), row[2].ToString()); sb.Append(caseTmp); } Console.WriteLine(sb.ToString()); Console.ReadKey(); } private static void ReadTxt() { StringBuilder sb = new StringBuilder(); string stringCase = @"case {0}: Code = ""{1}""; Info = ""{2}""; break; "; string[] lines = File.ReadAllLines("F:\\tmp.csv", Encoding.Default); //读取所有行 foreach (string line in lines) //对行进行foreach循环 { string caseTmp = ""; string[] values = line.Split(‘,‘); //行内数据使用,分格 caseTmp = String.Format(stringCase, values[1], values[0], values[2]); sb.Append(caseTmp); } File.WriteAllText("F:\\tmp.txt", sb.ToString()); //将拼接完成的字符串写入文件中 //Console.WriteLine(sb.ToString()); Console.ReadKey(); }
有需要的随便拿走
标签:
原文地址:http://www.cnblogs.com/silence-blog/p/5133031.html