【C#.NET】将excel中的sheet1导入到dataGridView1中 ,或者导入到DataTable,导入到DataSet
2017-01-19 12:38
435 查看
要实现的效果,选择EXECEL文件后,将EXECEL第一个工作簿的数据导入到DATTABLE里或者dataGridView1
//将excel中的sheet1导入到dataGridView1中 ,或者导入到DataTable
public DataTable ExcelToDataGridView1()
{
OleDbDataAdapter myCommand = null;
OleDbConnection conn = null;
DataTable dt = null;
DataSet ds = new DataSet();
try
{
System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();//弹出选择对话框
if (fd.ShowDialog() == DialogResult.OK)//选择了需要导入的文件
{
//string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + Server.MapPath("ExcelFiles/MyExcelFile.xls") + ";Extended Properties='Excel 8.0; HDR=Yes; IMEX=1'";
//此连接只能操作Excel2007之前(.xls)文件
//string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + excelFile.MapPath("ExcelFiles/Mydata2007.xlsx") + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
//此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
//备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反。
// "IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。
//获取全部数据
//string exename =fd.FileName.ToString();//选择中的文件路径和文件名
this.label1.Text = fd.SafeFileName.ToString();//选择的文件名
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + fd.FileName + ";" + "Extended Properties=Excel 8.0; ";
conn=new OleDbConnection(strConn);
conn.Open();
DataTable dt2 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);//获取选中的EXECEL里的所有工作簿
int dtname = dt2.Rows.Count-1; //提示dt2,表的第3列就是EXCEL所有工作簿的名字
string sheetName =dt2.Rows[dtname][2].ToString().Trim();//获取EXECEL第一个工作簿的名字
string strExcel =string.Format("select * from [{0}]", sheetName);
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(ds, sheetName);
this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
dt = ds.Tables[0] as DataTable;
this.label2.Text = sheetName;
conn.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("导入EXCEL数据异常:"+ex.Message);
}
finally
{
}
return dt;
// 3、需要使用的时候从dataset调用即可。
//例如得到excel中第i行第0列的数据的语句为:myDs.Tables[0].Rows[i].ItemArray[0].ToString() 注意都是从0开始的。
}
//将excel中的sheet1导入到dataGridView1中 ,或者导入到DataTable
public DataTable ExcelToDataGridView1()
{
OleDbDataAdapter myCommand = null;
OleDbConnection conn = null;
DataTable dt = null;
DataSet ds = new DataSet();
try
{
System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();//弹出选择对话框
if (fd.ShowDialog() == DialogResult.OK)//选择了需要导入的文件
{
//string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + Server.MapPath("ExcelFiles/MyExcelFile.xls") + ";Extended Properties='Excel 8.0; HDR=Yes; IMEX=1'";
//此连接只能操作Excel2007之前(.xls)文件
//string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + excelFile.MapPath("ExcelFiles/Mydata2007.xlsx") + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
//此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
//备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反。
// "IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。
//获取全部数据
//string exename =fd.FileName.ToString();//选择中的文件路径和文件名
this.label1.Text = fd.SafeFileName.ToString();//选择的文件名
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + fd.FileName + ";" + "Extended Properties=Excel 8.0; ";
conn=new OleDbConnection(strConn);
conn.Open();
DataTable dt2 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);//获取选中的EXECEL里的所有工作簿
int dtname = dt2.Rows.Count-1; //提示dt2,表的第3列就是EXCEL所有工作簿的名字
string sheetName =dt2.Rows[dtname][2].ToString().Trim();//获取EXECEL第一个工作簿的名字
string strExcel =string.Format("select * from [{0}]", sheetName);
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(ds, sheetName);
this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
dt = ds.Tables[0] as DataTable;
this.label2.Text = sheetName;
conn.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("导入EXCEL数据异常:"+ex.Message);
}
finally
{
}
return dt;
// 3、需要使用的时候从dataset调用即可。
//例如得到excel中第i行第0列的数据的语句为:myDs.Tables[0].Rows[i].ItemArray[0].ToString() 注意都是从0开始的。
}
相关文章推荐
- 【C#.NET】将excel或将CSV文件中的sheet1导入到dataGridView1中 ,或者导入到DataTable,导入到DataSet
- asp.net(C#)开发之一 dataset(datatable) 数据导入excel
- 把DataSet或者DataTable里的数据导入Excel中
- ASP.NET(C#)Excel导入Dataset的出现数据值丢失问题
- [ASP.NET-C#]将DataSet、DataTable中的数据导出为Excel的解决方法
- C# .Net 后台导出Excel方法(GridView、table或者DataTable)
- C#导入Excel到Dataset和导出Excel到DataTable
- 将Excel内容导入数据库(ASP.NET/C#)
- ASP.NET C#开发Excel导入的功能流程
- C# 从Excel表中导入数据函数到DataSet
- C# DataSet 导出 导入 Excel
- EXTJS学习系列提高篇:第二篇(转载)作者殷良胜,结合EXT2.2+C#.net实现将数据导入Excel的功能
- asp.net/c#代码实现excel to mssql数据导入
- C# 从Excel表中导入数据函数到DataSet
- 使用VSIUAL C#.NET操作Excel -把DataTable中的数据写入Excel
- asp.net/c#代码实现excel to mssql数据导入
- 将Excel内容导入数据库(ASP.NET/C#)
- DataTable或者DataSet匯出Excel
- C#中将DataTable数据集导入 Excel
- ASP.NET(C#) DataSet数据导出到Excel