您的位置:首页 > 编程语言 > C#

C# 读取EXCEL(CSV文件方式)

2016-10-20 19:42 351 查看
最近遇到一件事,要把所有人员信息(通过excel给出)生成一个静态页面,代码示例如下:
<html>
<body>
<tr>
<td>
名字:张三</br>
职业:工程师</br>
<hr/>

</td>
</tr>
<tr>
<td>
名字:李四</br>
职业:教师</br>
<hr/>

</td>
</tr>
</body>

给的excel示例如下:



实际信息量远远不止这些,如果人工的话得做2到3个小时。作为一名程序员,我想一定要通过程序来自动完成这项任务。

于是,查阅了各种资料。找到了一种比较方便的方法。

首先,将Excel文件的格式转换为.csv(这个不会的自行百度)。

然后,建立一个C#窗体程序:(拖入一个按钮和一个richTextBox)



然后双击按钮,编写代码:

<span style="white-space:pre">	</span>private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();//实例化打开对画框。
if (op.ShowDialog() == DialogResult.OK)//选择的文件名有效
{
//创建一个文件流
FileStream fs = new FileStream(op.FileName, FileMode.Open, FileAccess.Read, FileShare.None);
//创建读这个流的对象,第一个参数是文件流,第二个参数是编码(其实里面的值是多少对我们这个读没有什么问题)
StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding(936));

string str = "";
while (str != null)
{
str = sr.ReadLine();//读取一行
if (str == null) break;//读完了就跳出循环

String[] eachLine = new String[2];//因为知道每一行excel有2个单元格,所以string[2]
eachLine = str.Split(',');//因为.csv文件是以逗号分隔单元格里数据的,所以调用分隔函数split
string ser = eachLine[0];//名字
string dse = eachLine[1];//职业
foreach (string element in eachLine)//对于这行中的每个元素
{
richTextBox1.Text += element;//在多行文本框中输出元素
<span style="white-space:pre">			</span>richTextBox1.Text += " ";//在多行文本框中加入空格
}
richTextBox1.Text += "\n";//在多行文本框中换行
}
sr.Close();//关闭读流的对象
}

}
运行结果:



既然有了上面的方法,那么下面只要输出的格式符合网页的规范就可以了,这就很简单了,修改代码如下:

<span style="white-space:pre"> </span>private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();//实例化打开对画框。
if (op.ShowDialog() == DialogResult.OK)//选择的文件名有效
{
richTextBox1.Text="";//清空文本框内容
//创建一个文件流
FileStream fs = new FileStream(op.FileName, FileMode.Open, FileAccess.Read, FileShare.None);
//创建读这个流的对象,第一个参数是文件流,第二个参数是编码(其实里面的值是多少对我们这个读没有什么问题)
StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding(936));

string str = "";
while (str != null)
{
str = sr.ReadLine();//读取一行
if (str == null) break;

String[] eachLine = new String[2];
eachLine = str.Split(',');
string name = eachLine[0];
string job = eachLine[1];
richTextBox1.Text += "<tr>" + "\n" + " " + "<td>" + "\n";
richTextBox1.Text +=" "+"名字:"+name+"</br>"+"\n";
richTextBox1.Text += " " + "职业:" + job + "</br>" + "\n";
richTextBox1.Text += " " + "<hr/>" + "\n";
richTextBox1.Text+=" " + "<td>" + "\n"+"<tr>" + "\n";

}
sr.Close();//关闭读流的对象
}
}

运行结果如下:



把文本框里的内容拷贝到网页文件中去即可完成任务!

只要有音乐,就没有世界末日!

2016年10月20日20:32:05
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: