C#中 通过 OLedb 从2007 的Excel文件中读取数据的连接字符串是什么啊

gegewozai 2010-05-15 02:03:07
诚邀各位友友!!!
在此表示感谢!!
...全文
602 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gegewozai 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 flysky217 的回复:]
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Data.OleDb ;
public class Form1 : Fo……
[/Quote]

那个字符串好像用于读 2003 版本的哦
gegewozai 2010-05-17
  • 打赏
  • 举报
回复
本帖已结 谢谢各位友友的热心帮助!
flysky217 2010-05-17
  • 打赏
  • 举报
回复
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Data.OleDb ;
public class Form1 : Form
{
private Button button1 ;
private System.Data.DataSet myDataSet ;
private DataGrid DataGrid1 ;
private System.ComponentModel.Container components = null ;
public Form1 ( )
{
//初始化窗体中的各个组件
InitializeComponent ( ) ;
//打开数据链接,得到数据集
GetConnect ( ) ;
}
//清除程序中使用过的资源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void GetConnect ( )
{
//创建一个数据链接
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = c:\\sample.xls;Extended Properties=Excel 8.0" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
string strCom = " SELECT * FROM [Sheet1$] " ;
myConn.Open ( ) ;
//打开数据链接,得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
//创建一个 DataSet对象
myDataSet = new DataSet ( ) ;
//得到自己的DataSet对象
myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;
//关闭此数据链接
myConn.Close ( ) ;
}
private void InitializeComponent ( )
{
DataGrid1 = new DataGrid ( ) ;
button1 = new Button ( ) ;
SuspendLayout ( ) ;
DataGrid1.Name = "DataGrid1";
DataGrid1.Size = new System.Drawing.Size ( 400 , 200 ) ;
button1.Location = new System.Drawing.Point ( 124 , 240 ) ;
button1.Name = "button1" ;
button1.TabIndex = 1 ;
button1.Text = "读取数据" ;
button1.Size = new System.Drawing.Size (84 , 24 ) ;
button1.Click += new System.EventHandler ( this.button1_Click ) ;
this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
this.ClientSize = new System.Drawing.Size ( 400 , 280 ) ;
this.Controls.Add ( button1 ) ;
this.Controls.Add ( DataGrid1 ) ;
this.Name = "Form1" ;
this.Text = "读取Excle表格中的数据,并用DataGrid显示出来!" ;
this.ResumeLayout ( false ) ;
}
private void button1_Click ( object sender , System.EventArgs e )
{
DataGrid1.DataMember= "[Sheet1$]" ;
DataGrid1.DataSource = myDataSet ;
}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
}
只在此山中 2010-05-17
  • 打赏
  • 举报
回复
把c:\a.xlsx改成你的excel文件的路径文件名就可以了。
只在此山中 2010-05-17
  • 打赏
  • 举报
回复
Excel 97-2003版本:
Provider= Microsoft.Jet.OLEDB.4.0;Data Source=c:\a.xls;Extended Properties=Excel 8.0;

Excel 2007版本:
Provider= Microsoft.Ace.OleDB.12.0;Data Source=c:\a.xlsx;Extended Properties=Excel 12.0;

llddyy123wq 2010-05-16
  • 打赏
  • 举报
回复
对了,那个路径 要改成相对路径,我忘记改了。。汗。
llddyy123wq 2010-05-16
  • 打赏
  • 举报
回复
我以前用过的。没错误。

using System;
using System.Data;
using System.Data.OleDb;
using System.Collections.Generic;
using System.Text;

namespace DAL
{
public class DataBaseOperate:IDisposable
{
//保存数据库连接字符串
private string strConn;
//数据库连接标志
private bool isConnected;
//数据库连接对象
private OleDbConnection objConn;
public OleDbCommand objCmd;
private OleDbDataAdapter objAdapter;
/// <summary>
/// 构造函数,初始化内部变量
/// </summary>
public DataBaseOperate()
{
//定义数据库连接状态
isConnected = false;
//给连接字符串同赋值
strConn = GetStrConn();
//strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"..\..\DB\ProductDB.accdb";
}
public string GetStrConn()
{
return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\\学习心得\\上海1年\\项目\\WINFORM\\客户端产品管理\\WindowsApplication1\\WindowsApplication1\\DB\\ProductDB.accdb";
}
/// <summary>
/// 连接数据库,并打开打开数据库联接
/// </summary>
/// <returns>成功则返回true</returns>
private bool GetConnection()
{
if (!isConnected)
{
try
{
if (objConn == null)
{
objConn = new OleDbConnection(strConn);
objConn.Open();
}
if (objCmd == null)
{
objCmd = new OleDbCommand();
}
objCmd.Connection = objConn;
return true;
}
catch(OleDbException ex)
{
throw ex;
}
}
return false;
}
wuyq11 2010-05-16
  • 打赏
  • 举报
回复
gegewozai 2010-05-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
http://www.connectionstrings.com/excel-2007
[/Quote]

不知道为什么 这些字符串都用不了
我在百度是查了一下 也是这个字符串
为什么就用不了了 也不报错 郁闷耶
gegewozai 2010-05-16
  • 打赏
  • 举报
回复
谢谢你, 我还有点不明白
这个
Data Source中写的“ProductDB.accdb”是什么文件呢?
gegewozai 2010-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zdbb 的回复:]
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\a.xls; Extended Properties='Excel 8.0;HDR=no;IMEX=0'";

注:1)使用 Excel 工作簿时,默认情况下,区域中的第一行是标题行(或字段名称)。如果第一个区域不包含标题,您可以在连接字符串的扩展属性中指定 HDR=NO。如果您在连接字符串中指定……
[/Quote]

这个能够读取 2003 的Excel 文件中的内容,但 07 的好像读取不了。
只在此山中 2010-05-15
  • 打赏
  • 举报
回复
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\a.xls; Extended Properties='Excel 8.0;HDR=no;IMEX=0'";

注:1)使用 Excel 工作簿时,默认情况下,区域中的第一行是标题行(或字段名称)。如果第一个区域不包含标题,您可以在连接字符串的扩展属性中指定 HDR=NO。如果您在连接字符串中指定 HDR=NO,Jet OLE DB 提供程序将自动为您命名字段(F1 表示第一个字段,F2 表示第二个字段,依此类推);2)IMEX=1将所有读入数据看作字符,其他值(0、2)请查阅相关帮助文档;3)如果出现“找不到可安装的isam”错误,一般是连接字符串错误

从excel文件读取数据

string sql = "select * from [sheet1$]";

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧