C#实现从EXCEL将数据导出到datagridview
2009-02-11 16:51
831 查看
源代码:
public void ImportDataFromExcel(string filePathAndName)
{
if (File.Exists(filePathAndName))
{
//连接字符串
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePathAndName + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
//连接打开
conn.Open();
//获取EXCEL表格的框架,以便获得多个工作薄的数据
DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
DataSet ds = new DataSet();
string tableName, strSql;
//获得每一个工作簿的数据,都填充到数据集中
for (int i = 0; i < schemaTable.Rows.Count; i++)
{
tableName = schemaTable.Rows[i][2].ToString().Trim();//Rows[i][2]指向Excel表格的框架的表名列
strSql = "select * from [" + tableName + "]";
OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, conn);
adapter.Fill(ds, tableName);//填充数据集
}
//关闭连接
conn.Close();
//多个工作薄时可以遍历数据集中的所有表,然后获取表格的数据
dataGridView1.DataSource = ds.Tables[0];
//dataGridView2.DataSource = ds.Tables[1];
}
}
注意问题:数据导出时,如果excel表格不是完全存储数据,如前几行存放了表格的说明,真正数据从后面第几行开始时,可能出现某些数据获取不到。原因是:使用OleDB获取excel数据,导出数据的类型自动安前八行识别。如果某一列的数据类型不一致的话就会出现上述情形。
解决办法:修改连接字符串的Extended Properties=Excel 8.0;为Excel 8.0;HDR=Yes;IMEX=1就可以了。即:
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePathAndName + ";" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";
public void ImportDataFromExcel(string filePathAndName)
{
if (File.Exists(filePathAndName))
{
//连接字符串
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePathAndName + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
//连接打开
conn.Open();
//获取EXCEL表格的框架,以便获得多个工作薄的数据
DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
DataSet ds = new DataSet();
string tableName, strSql;
//获得每一个工作簿的数据,都填充到数据集中
for (int i = 0; i < schemaTable.Rows.Count; i++)
{
tableName = schemaTable.Rows[i][2].ToString().Trim();//Rows[i][2]指向Excel表格的框架的表名列
strSql = "select * from [" + tableName + "]";
OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, conn);
adapter.Fill(ds, tableName);//填充数据集
}
//关闭连接
conn.Close();
//多个工作薄时可以遍历数据集中的所有表,然后获取表格的数据
dataGridView1.DataSource = ds.Tables[0];
//dataGridView2.DataSource = ds.Tables[1];
}
}
注意问题:数据导出时,如果excel表格不是完全存储数据,如前几行存放了表格的说明,真正数据从后面第几行开始时,可能出现某些数据获取不到。原因是:使用OleDB获取excel数据,导出数据的类型自动安前八行识别。如果某一列的数据类型不一致的话就会出现上述情形。
解决办法:修改连接字符串的Extended Properties=Excel 8.0;为Excel 8.0;HDR=Yes;IMEX=1就可以了。即:
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePathAndName + ";" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";
相关文章推荐
- c# 实现将dataGridView中的数据导出到Excel
- C#实现读写EXCEL数据—附实例导出DATAGRIDVIEW 数据到EXCEL
- 【转】C# WinForm下DataGridView导出Excel的实现(简单无错版,带另存对话框)
- C#操作Excel,将DataGridView数据导出到Excel中
- C#中DataGridView数据导出到Excel
- C# 实现Excel导出 加载模板 导入数据到模板
- C# Winform实现数据的导出为txt或者CSV或者excel格式
- C#实现数据导出Excel工作表
- c#如何实现把datagridview里的数据导出到Excel里
- C#将DataGridView中的数据导出为EXCEL
- C#操作Excel,将DataGridView数据导出到Excel中
- C#实现EXCEL数据的导入导出
- C#将dataGridView数据导出成EXCEl、WORD格式
- C#用流实现DataGridView中数据Excel格式的导出
- C# WinForm 实现增删改查等功能(Access版) 系列之八-导出数据到Excel
- C#语言怎么实现从SQL SERVER导出数据到EXCEL
- C#如何连接Oracle数据库,如何把数据绑定到dataGridView,如何把dataGridView数据导出到EXCEL
- C# WinForm程序中将DataGridView中的数据导出为EXCEL
- 【转】c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据
- C# WinForm下DataGridView导出Excel的实现