Tag: oledbconnection

使用C#中的OleDbConnection读取Excel表单时丢失数据

我需要读取Excel数据并存储在数据库中。 当我试图读取数据时,有一些数据错过了,我无法find。 这是我的Excel表 我的代码: private string Excel03ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"; [![//Get the name of the First Sheet. using (OleDbConnection con = new OleDbConnection(conStr)) { using (OleDbCommand cmd = new OleDbCommand()) { cmd.Connection = con; con.Open(); DataTable dtExcelSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); sheetName = dtExcelSchema.Rows\[0\]\["TABLE_NAME"\].ToString(); con.Close(); } } //Read Data from the First Sheet. using […]

OleDbConnectionstring的问题 – 文件夹名称包含空格

我有OleDbConnectionstring格式的问题。 我使用OleDb类访问Excel文件。 这里是将excel表加载到数据集的方法。 public DataSet LoadExcelFileToDataSet(string file, string sheetName) { string connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + file + ";" + "Extended Properties=Excel 8.0;"; var oledbConn = new OleDbConnection(connString); try { // Open connection oledbConn.Open(); // Create OleDbCommand object and select data from worksheet Sheet1 var cmd = new OleDbCommand("SELECT * FROM [" + […]

导入Excel工作表到datagridview – 工作簿需要closures才能使用OleDB?

我试图导入一个Excel工作表到datagridview,但我遇到了一个错误:“数据库或对象是只读的。 但是,我正在引用的工作簿没有应用只读属性。 话虽如此,我连接的工作簿已经打开,如果我的应用程序正在运行,所以我怀疑这是我遇到这个错误的原因。 工作簿是打开的,因此在尝试填充数据集时,系统显示为只读。 我对这个假设是否正确? 如果我连接的工作簿是打开的,他们是一种使用OleDB连接将Excel工作表导入到datagridview的方法吗? 如果没有,有没有其他的方式来填充这个datagridview,而不必通过我的工作表进行大规模的循环? 我的代码如下: Try 'connect to Excel data source and set gridview equal to dataset (entire sheet should be visible in gridview) Dim MyConnection As System.Data.OleDb.OleDbConnection Dim MyCommand As System.Data.OleDb.OleDbDataAdapter Dim connstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & StatVar.workbookName & ";Extended Properties=""Excel 12.0;HDR=YES;Readonly=False"";" 'may need to use different […]

错误:确保它不包含无效字符或标点符号,并且不会太长

我尝试使用oledb获得excel表名。 我的连接string是: string ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;"; 其中filepath是一个文件名。 我的代码为: OleDbCommand cmd = new OleDbCommand(@"SELECT * FROM [Employee$]", conn); OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); adapter.Fill(Data); 在这一行中得到一个错误 adapter.Fill(数据); 错误是 System.Data.dll中出现“System.Data.OleDb.OleDbException” 附加信息:“Employee $”不是有效的名称。 确保它不包含无效字符或标点符号,并且不会太长。 如何才能做到这一点?

“Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册

在窗口服务器2008 R2上传我的asp.net应用程序之后,我得到了下面的错误 “Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册。 我用下面的oleDbConnection类来读取excel文件 OleDbConnection excelConn = null; try { if (System.IO.Path.GetExtension(fileName) == ".xlsx") { excelConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"); } else { excelConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"); } excelConn.Open(); DataTable dt = new DataTable(); dt = excelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 谷歌search后,我发现我需要安装2007年的Office系统驱动程序,所以我也试过,但是我得到同样的错误。

如何指定打开excel文件的stringpath?

我该如何去指定一个打开一个Excel文件的stringpath,知道Excel文件的文件名会一直改变,或者至less将该文件夹中最近保存的Excel文件插入到stringpath中? 例如, string PATH = @"C:\myFileNameWillAlwaysCHange.xlms or mostRecentFile.xlms"; string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PATH + ";Extended Properties=Excel 12.0"; 我想知道如果文件夹中的Excel文件将是唯一的Excel文件,如果有一种方法来指定该文件夹中的任何(只)Excel文件的path基础,并插入stringpath?

我怎样才能将所有行转换为txt文件?

我已经有了从.xls到.txt的转换代码。 但问题是,它只输出一行,并停止。 我需要添加代码来读取所有行并将其转换为txt文件? 这里是我的代码如下: using (OleDbConnection cn = new OleDbConnection()) { using (OleDbCommand cmd = new OleDbCommand()) { cn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"C:\Users\jediablaza\Documents\EDIExcel\EDIExcel.xls" + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";"; cmd.Connection = cn; cmd.CommandText = "SELECT * from [Sheet1$]"; using (OleDbDataAdapter adp = new OleDbDataAdapter(cmd)) { DataTable dt = new DataTable(); adp.Fill(dt); using (StreamWriter wr = new […]

ACE oleDb驱动程序无法处理巨大的Excel文件

ACE OLEDB驱动程序是否有更大文件的已知问题? 我正在使用下面的代码来检索400Mb xls文件中的工作表 public string[] GetWorkSheets() { var connectionString = "Provider=Microsoft.ACE.OleDb.12.0; data source=c:\filepath\filename.xls; Extended Properties=\"Excel 8.0;IMEX=1;HDR=YES;\""; DataTable dataTable; using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open();//Exception thrown here for large files dataTable = connection.GetSchema("Tables"); } int lenght = dataTable.Rows.Count; string[] worksheets = new string[lenght]; for (int i = 0; i < lenght; i++) { […]

使用OleDbConnection检索带有特殊字符的Excel工作表名称

嘿所有,我试图从Excel文件使用OleDbConnection获取表名称列表。 (注意:该程序将在服务器上运行,因此无法使用Office Interop类)。 所以一切工作正常,下面的代码,它带回表名: var dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); foreach (DataRow row in dt.Rows) { string sheetName = row["TABLE_NAME"].ToString(); } 但是,如果Excel表名包含一个点“。”,那么将转换为“#”。 例如,如果excel文件具有以下图表名称: Sheet.1 Sheet#1 上面的代码将返回: "Sheet#1$" "'Sheet#1$'" 而表单名称现在基本相同。 变差!!! 当按照以下代码从Sheet.1读取数据时: var adapter = new OleDbDataAdapter("SELECT * FROM ['Sheet.1$']", connectionString); 它实际上将从“工作表#1”而不是“工作表1”中读取数据。 任何帮助将不胜感激。

在一个连接上多个OleDbDataReader:确定它正在这种情况下工作

我在一个OleDbConnection网上search了多个OleDbDataReader,但所有的答案是否定的,但是,这个代码工作没有错误。 这是为什么? Dim DATA_BASE_Name As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) & "\TABLES.XLS" Dim ConnectionStringBuilder As New System.Data.OleDb.OleDbConnectionStringBuilder ConnectionStringBuilder("Provider") = "Microsoft.Jet.OLEDB.4.0" ConnectionStringBuilder("Data Source") = DATA_BASE_Name ConnectionStringBuilder("Mode") = "ReadWrite" ConnectionStringBuilder("Extended Properties") = "Excel 8.0;HDR=No" Dim XLS_DATA_BASE As OleDbConnection = New OleDbConnection(ConnectionStringBuilder.ConnectionString) XLS_DATA_BASE.Open() Dim Command As OleDbCommand = New OleDbCommand Dim Command2 As OleDbCommand = New OleDbCommand Command.Connection = XLS_DATA_BASE […]