Tag: oledb

在Excel中打开工作簿时,OleDbConnection仅查找单元格值

我有一个程序(实际上是SSIS脚本任务,但我不认为这很重要),它创build了与Excel工作簿的OLE DB连接,并读取每个工作表中的单元格值,并将它们存储在SQL Server表中。 每个工作表都有几个行的部分,每个部分是一个单独的产品。 每个产品部分的前两行是四分之一行和一年行。 这里是一个屏幕截图: 我用一个“select*”命令OleDbDataReader读取每个表中的数据到一个DataTable。 我在我的SQL数据库中有一个名为“YearQuarter”的列,在这里我存储了年份行值和上一个季度行值的连接,并在两个string之间使用了一个连字符: 我的代码是这样的: OleDbConnection oleExcelConnection = new OleDbConnection( "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + strWkbkFilePath + ";" + "Mode=Read;" + "Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\""); oleExcelConnection.Open(); DataTable dtCurrSheet = new DataTable(); // Name of table is in strLoadTblNm. OleDbCommand oleExcelCommand; OleDbDataReader oleExcelReader; oleExcelCommand = excel_conn.CreateCommand(); oleExcelCommand.CommandText = "Select * From [" + […]

当有166,110行时,Microsoft ACE OLEDB连接创build空的Excel

我在C#中编程并使用oledbconnection 。 这是标准的连接string,例如 using (OleDbConnection conn = new OleDbConnection( "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + saveFilenameAndLocation + ";Extended Properties='Excel 12.0 Xml;HDR=Yes'" )) 这个工作成功,并创build我的Excel电子表格充满了正确的数据,当行数不是过多。 但是,只要电子表格中的行数增加到较大(例如,当前在166,110行上失败),它就会生成一个空的电子表格,并将工作表选项卡名称设置为A266FF2A662E84b639DA 。 这是不可能重写这个,所以它不使用OLEDB连接,任何想法,为什么它行不行时,行大小增加?

使用OLEDB +读取.xlsx文件某些单元格未加载数据时出现问题

希望有人能帮助我 我试图加载一个.xlsx文件到一个DataTable中,然后使用C#.Net处理信息。 得到了基本知识和运行,连接使用OLEDB,数据加载,我输出到DataGridView来检查数据。 我遇到的问题是一些单元格(只有less数)不加载Excel文件中包含的数据。 在我的例子中,例如单元格“C3”,这是一个通用格式化的单元格,就像Excel中这一行上的所有其他单元格不会加载其内容。 实际的单元格应该加载为MEMBERSHIP,但是当输出到gridview时,它会显示一个空白,或者在debuggingDataRow / Col值时它是空白的,即使excel文件在这个单元格中有数据。 如果我把这个单元格MEMBERSHIP的内容更改为123456这样的数字,那么它会将这个值加载好,但是如果我把这个值改回字符,它会再次返回空白。 大部分单元格(15个中的13个)加载在此行上,除了2以外,它们具有相同的格式。 这里是我在我的代码中使用的连接string,实际上从这个网站:): try { string tabsheet = Path.GetFileNameWithoutExtension(FullFileName); string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FullFileName + ";" + "Extended Properties='Excel 12.0 Xml;HDR=NO'"; var adapter = new OleDbDataAdapter("SELECT * FROM [" + tabsheet + "$]",connectionString); adapter.Fill(aDataTable); } catch (Exception er) { logfile.AddToFile("GetDataTableFromCsv exception: " + er.Message); } […]

使用jet.oledb.4.0导入Excel工作表,将第一行设置为列名

我正在尝试使用Jet.Oledb将excel文件导入到数据表中 。 这是我的代码: string sourceConstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + HttpContext.Current.Server.MapPath("~/" + fileName) + "';Extended Properties='Excel 8.0;HDR=No;IMEX=1'"; OleDbConnection con = new OleDbConnection(sourceConstr); OleDbCommand oleDbCmd = new OleDbCommand(); con.Open(); oleDbCmd.Connection = con; DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string firstExcelSheetName=dt.Rows[0][2].ToString(); string query = "select * from [" + firstExcelSheetName + "]"; OleDbDataAdapter data = new OleDbDataAdapter(query, con); data.TableMappings.Add("Table", […]

OLEDB与更新excel单元格

我写了这个方法来更新一个excel单元格: public void update(string fileName, string sheetName) { string connString = connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(fileName) + ";Extended Properties=Excel 12.0"; try { OleDbConnection oledbConn = new OleDbConnection(connString); oledbConn.Open(); OleDbCommand cmd = new OleDbCommand("UPDATE ["+sheetName+"$B5:B5] SET F1=17", oledbConn); cmd.ExecuteNonQuery(); oledbConn.Close(); } catch(Exception ex) { Debug.Write("Error: " + ex.Message); } } 我这样称呼它: update("test.xls", "test"); B5单元在“testing”表单中可用,但值不会更新。 我甚至尝试过这个: […]

将巨大的Excel表导入Datatable

我有一个Excel工作表,有两个选项卡。 一个是大约700K,另一个是大约25K。 问题是当我加载文件我的记忆被吃掉,它崩溃! 如何处理巨大的文件,有些甚至可能超过一百万行。 这是我目前使用的代码: OleDbConnection cnn = new OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + fileName + "';Extended Properties=Excel 12.0;"); cnn.Open(); string qry = "SELECT * FROM [Detail$]"; OleDbDataAdapter odp = new OleDbDataAdapter(qry, cnn); odp.Fill(detailTable); DataSet tmp = new DataSet(); if (detailTable.Rows.Count > 0) { Console.WriteLine("Total " + detailTable.Rows.Count + " Detail rows Loaded"); // MessageBox.Show("Input Sheet UPLOADED […]

c#OleDbConnection CSV到excel从csv跳过第一行

当由于某种原因使用这段代码时,它会跳过csv文件的第一行,这是头文件。 我究竟做错了什么? string strFileName = path; OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + System.IO.Path.GetDirectoryName(strFileName) + "; Extended Properties = \"Text\""); conn.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + System.IO.Path.GetFileName(strFileName), conn); DataSet ds = new DataSet("Temp"); adapter.Fill(ds); DataTable tb = ds.Tables[0]; string data = null; for (int j = 0; j […]

在C#中使用OleDb读取Excel数据时出现错误(此表包含在此电子表格中定义的单元格范围之外的单元格)

我是学习C#的初学者。 我想从Excel文件读取数据,但我不知道为什么我不断收到错误: '该表格包含超出此电子表格中定义的单元格范围之外的单元格' 我以前尝试过同样的方法,并没有得到任何错误,但是这是为了一个预先存在的Excel文件。 但是在这种情况下,我先创build了excel文件,然后才从中读取。 当我从列行“A12”开始读取时,就是这样。 我想读取从A12开始的列行的主要原因是确定是否有空单元,以后可以用来input数据; 这个过程需要重复,每次需要将新的数据添加到excel文件中。我希望你能理解我正在做的事情。 这里是代码: // Initializing C# – Excel Export Method: Microsoft.Office.Interop.Excel.Application m_excelLoanReceiptWrite = new Microsoft.Office.Interop.Excel.Application(); m_excelLoanReceiptWrite.Application.Workbooks.Add(Type.Missing); // Writing Data to Excel m_excelLoanReceiptWrite.Cells[1, 1] = "Loan Receipt"; m_excelLoanReceiptWrite.Cells[3, 1] = "Name"; m_excelLoanReceiptWrite.Cells[5, 1] = "ESM ID No."; m_excelLoanReceiptWrite.Cells[7, 1] = "Mobile No."; m_excelLoanReceiptWrite.Cells[3, 4] = "Loan Date & Time:"; m_excelLoanReceiptWrite.Cells[5, […]

oledb数据库连接错误

连接 Conn_String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\UTS.mdb" conn = New OleDbConnection(Conn_String) conn.Open() 询问 sqlCmd.Connection = conn sqlCmd.CommandText = "INSERT into Customer_Master Values (@Cust_ID,@Cust_Name,@Cust_Address,@Cust_ContactNo)" sqlCmd.Parameters.AddWithValue("@Cust_ID", SqlDbType.Int).Value = Cust_id sqlCmd.Parameters.AddWithValue("@Cust_Name", SqlDbType.Text).Value = txtcname.Text sqlCmd.Parameters.AddWithValue("@Cust_Address", SqlDbType.Text).Value = txtcadd.Text sqlCmd.Parameters.AddWithValue("@Cust_ContactNo", SqlDbType.Int).Value = txtccontact.Text.ToString sqlCmd.ExecuteNonQuery() conn.Close() 问题 当我点击包含上面的代码的button,它给了我下面的错误.. UTS.exe中发生未处理的System.NullReferenceExceptionexception 附加信息:对象引用未设置为对象的实例。 错误是在这一行 – > sqlCmd.Connection = conn

无法使用Microsoft.Jet.OLEDB.4.0创buildexcel文件

例如,我发现在几个来源如何ctreate excel文件 http://www.codeproject.com/Articles/37055/Working-with-MS-Excel-xls-xlsx-Using-MDAC-and-Oled#create 无法使用OLEDB创buildExcel文件C# http://bytes.com/topic/net/answers/608150-generate-excel-file-without-excel 但是当我尝试使用build议的代码时,在OleDbConnection的命令Open()上出现错误。 System.Data.OleDb.OleDbException:Microsoft Jet数据库引擎找不到对象'D:\ Import2013 \ Imported \ 254 \ template.xls'。 确保对象存在,并且正确拼写其名称和path名称。 这是我使用的代码。 string subFolder = Session["LoginID"] != null ? Server.MapPath( "Imported" ) + "\\" + Convert.ToString( Session["LoginID"] ) : ""; if (string.IsNullOrWhiteSpace( subFolder )) { Response.Redirect( "Default.aspx" ); Response.End(); } StringBuilder commandText = new StringBuilder( "CREATE TABLE [Imported] (" ); […]