将excel文件导入到winform的控件中

时间:2022-12-14 20:40:10

将excel文件导入到winform的控件中

【转】http://hi.baidu.com/fzcid/blog/item/e8abfe24af56a80a4d088d12.html

 

 

要添加引用COM中的Microsoft.office.core

然后添加命名空间System.Data.OleDb;

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.ofd_in.DefaultExt = "xls";
this.ofd_in.Filter = "Excel文件(*.xls)|*.xls";
}
/// <summary>
/// 从选择的excel导入
/// </summary>
/// <returns></returns>
public void ImportExcel(string ExcelName,string Tablename)
{
string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ExcelName+";Extended Properties='Excel 8.0;HDR=No;IMEX=1';";//连接excel文件的字符串
if (ExcelName == null)
{
return;
}
OleDbConnection odcon = new OleDbConnection(strcon);//建立连接
odcon.Open();//打开连接
////循环输出显示到控件中
//OleDbCommand odc = new OleDbCommand("select * from " + Tablename, odcon);
//OleDbDataReader dr = odc.ExecuteReader();
//while (dr.Read())
//{
// ListViewItem item=new ListViewItem (dr[0].ToString());
// item.SubItems.Add(dr[1].ToString());
// listView1.Items.Add(item);
//}
//把数据集dataset放到控件中显示
OleDbDataAdapter odda = new OleDbDataAdapter("select * from " + Tablename, odcon);
DataSet ds = new DataSet();
try
{
odda.Fill(ds);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
if (ds != null)
{

this.dataGridView1.DataSource = ds.Tables[0];

}
else
{
MessageBox.Show("没有数据");
}
}

private void button1_Click(object sender, EventArgs e)
{
if (ofd_in.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.textBox1.Text = ofd_in.FileName.ToString();
ImportExcel(ofd_in.FileName, "[Sheet1$]");//传递excel文件名,和表名
}
}
}

提示:1 HDR=No的值等于No表示第一行不是标题,Yes表示第一行是标题

2 表名不能写成"Sheet1",这样会出错

3 如果出现提示:找不到可安装的ISMA这是因为连接字符串写的有问题