C#应用程序将excel文件内容导入文本文件

时间:2010-12-08 22:22:16

标签: c# visual-studio-2010

我的excel文件包含以下列

Field1 Field2 Field3, Field4
===============================
123 4   abcd    efghi
456 5   aabb    ffjjk
789 7   ccdd    ababa

我想写一个c#控制台应用程序 将读取excel文件并使用。创建文本文件 以下输出

Field1 Field2 Field3, Field4
===============================
123 4   ab  hi
456 5   aa  jk
789 7   cc  ba

在我的控制台应用程序中,我应该能够在excel文件中指定每列,即开始和结束列。

我如何从头到尾编写应用程序?

2 个答案:

答案 0 :(得分:4)

这样做的一种方法是查询电子表格

string strConn = "Provider=Microsoft.Jet.OleDb.4.0;data source=C:\\Inetpub\\wwwroot\\CS\\HostData.xls;Extended Properties=Excel 8.0;";
OleDbConnection objConn = new OleDbConnection(strConn);

string strSQL = "SELECT * FROM [A1:B439]";
OleDbCommand objCmd = new OleDbCommand(strSQL, objConn);

objConn.Open();
dgReadHosts.DataSource = objCmd.ExecuteReader();
dgReadHosts.DataBind();
objConn.Close();

我从这里抓住了这个例子:http://forums.asp.net/t/1097496.aspx 另一个好的来源是搜索SO:P Reading Excel files from C#

最后我想你会喜欢这个:http://msdn.microsoft.com/en-us/library/dd920313.aspx 它包括使用linq AND的示例以及将电子表格输出到consol的示例

答案 1 :(得分:2)

您可以使用Excel Automation获取数据,然后使用标准System.IO类将其写入文件。

详情请见此处:How to automate Microsoft Excel from Microsoft Visual C#.NET

如果您设法将一行的所有值检索到某种数组或列表中,则可以使用String.Join将其转换为制表符分隔的字符串,然后一次只写一行文件。

要仅获取某些列的某些部分值,您可以使用String.Substring

您也可以使用OleDB读取所有数据,因为它似乎采用表格格式,可以更快,并避免依赖于安装Excel。