首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 连接 Excel解决方案

2012-01-07 
C# 连接 Excel将Excel作为数据库连接Excel为不固定路径名称的文件,C#连接它,通过Excel内的数据进行相关处

C# 连接 Excel
将   Excel   作为数据库连接

Excel为不固定路径名称的文件,C#连接它,通过Excel内的数据   进行相关处理   生成一个新Sheet表。

1.C#能不能遍历   Sheet
2.C#能不能遍历   Sheet   内的   首行
3.C#能不能在现有Excel创建新   Sheet
4.编码上是不是就和数据库一样操作

初学C#,十分感谢。

[解决办法]
C# WinForm中实现
开始需加:
using System.Data.OleDb;
在按钮中添加下列代码:
string cs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\文件.xls;Excel 8.0;HDR=Yes;IMEX=1 ";
OleDbConnection CNN = new OleDbConnection(cs);
CNN.Open();
//历遍Sheet,显示每个Sheet名。
DataTable ttable = cn.GetSchema( "Tables ");
foreach (DataRow row in ttable.Rows)
if (row[ "Table_Type "].ToString() == "TABLE ")
MessageBox.Show(row[ "Table_Name "]);
//历遍某一sheet的所有行,所有列,显示到dataGridView控件。
string ss = "select * from [Sheet1$] "
OleDbCommand CMD = new OleDbCommand(ss, CNN);
OleDbDataReader RAD = CMD.ExecuteReader();
DataTable Tab = new DataTable();
for (int i = 0; i < OleDbRAD.FieldCount; i++)
Tab.Columns.Add(OleDbRAD.GetName(i), OleDbRAD.GetFieldType(i));
DataRow row;
while (OleDbRAD.Read())
{
row = tab.NewRow();
for (int i = 0; i < tab.Columns.Count; i++)
row[i] = OleDbRAD.GetValue(i);
Tab.Rows.Add(row);
}
dataGridView1.DataSource = Tab;

[解决办法]
public static ArrayList GetExcelSheet(string FileName)
{
ArrayList ret=new ArrayList();
OleDbConnection Conn=null;
try
{

//连接到Excel;
string strConn = "Provider=Microsoft.Jet.OleDb.4.0; Data Source= "+FileName+ "; Extended Properties=Excel 8.0; ";
Conn = new OleDbConnection(strConn);
Conn.Open();
//获取Sheet的名字。
DataTable schemaTable = Conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
//schemaTable.Rows.Count值为Sheet的总数

//注意schemaTable是从0开始,即第0个是第1个Sheet。第2列是Sheet名。
for(int i=0;i <schemaTable.Rows.Count;i++)
{
string s=schemaTable.Rows[i][2].ToString().Trim();
ret.Add(s.Remove(s.Length-1,1));
}

Conn.Close();

}
catch(Exception e)
{
LastErr=e.Message;

}
return ret;

}

热点排行