Tag: oledbdataadapter

C#Typed DataSets:OleDBDataAdapter使用Typed DataSet中的列名而不使用ExcelSheet

我正在使用VS 2010与C#的Windows窗体应用程序。 我需要将我的数据从Excel工作表加载到DataSet。 我使用DataSetdevise器创build了DataSet,并手动添加了表和列(FirstTable, Column1, Column2) 。 由于我访问的列很多,代码会更清晰,有一个types的数据集,而不是使用无types的数据集。 当我使用OleDBDataAdapter并使用填充FirstTable填充DataTable时, Column1和Column2是空的,并且还有两个来自Excel工作表(ExcelCol1, ExcelCol2)附加列。 所以,除非我给了FirstTable (而不是Column1和Column2如果我把它称为ExcelCol1和ExcelCol2 )相同的Excel列名称,它不会填充通过devise器创build的DataColumns。 有什么办法告诉DataSet忽略来自Excel的列,只填充已定义的DataColumns? 如果这是不可能的,我可以以某种方式通过DataConnection连接Excel工作表来创buildDataTables的布局? 我不知道的唯一的事情是,Excel文件是用户定义的,所以用户浏览到Excel文件来填充数据集。 但所有这些Excel文件的列将始终是相同的。 因此我想使用Typed DataSet预设布局。

通过C#中的OleDbDataAdapter导入Excel通过更改列名称

你好,我尝试导入一个Excel文档到我的DataGridView在C#中。 到目前为止,它的工作,但有一个数据列,我需要“sorting”。 如果这很简单,我会在OleDbDataAdapter查询中执行“WHERE test> 0”。 但是..列的名称正在改变与每个文件,我需要经常使用它。 到目前为止,我得到这个: private void button1_Click(object sender, EventArgs e) { String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=C:\\Users\\Test\\Desktop\\Test.xls;" + "Extended Properties=Excel 8.0;"; DataSet ds = new DataSet(); OleDbDataAdapter da = new OleDbDataAdapter ("SELECT * FROM [Test$]", strConn); da.Fill(ds); dataGridView1.DataSource = ds.Tables[0].DefaultView; } 在select我需要把一个女巫的状态,列的前3个字母是相同的,但后面的数字不是。 喜欢: QTA 12345,QTA 13213,QTA 92818。 就像是: OleDbDataAdapter da = […]

OleDbAdapter SelectCommand Excel c#

我想查询Excel文件中唯一的一个工作表的数据。 MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$] ", MyConnection); 该行查询Sheet1中的数据。 问题是,我不知道input文件中表单的名称是什么。 有没有什么办法可以编写命令string,以便它可以访问表格,不pipe名字是什么。

不规则的System.Data.OleDb.OleDbException(0x80004005):无效的参数问题

在生产系统上,我们是有时读取excel到数据表(在同一代码相同的文件不会今天工作,但会在其他date)获取下面的错误信息。 System.Data.OleDb.OleDbException(0x80004005):无效的参数。 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,Object&executeResult)at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object&executeResult)at System.Data.OleDb在System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior行为,string方法)System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior行为)上的.OleDbCommand.ExecuteCommand(CommandBehavior行为,对象和executeResult) System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset,DataTable [] datatables,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand命令,System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior行为) System.Data.Common.DbDataAdapter.Fill(DataTable [] dataTables,Int32 startRecord,Int32 maxRecords,IDbCommand command,CommandBehavior行为)在System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) 但问题是,在生产服务器上,它今天运行良好,但明天或后天,它将无法正常工作,然后再次开始工作。 下面是代码。 string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + readFilePath + ";Extended Properties=\"Excel 12.0;\""; ExcelConnection = new OleDbConnection(ConnectionString); string ExcelQuery = "Select FORMAT(SAMPDATE,'dd/MM/yyyy') as SAMPDATE,FORMAT(LANDED_ON,'dd/MM/yyyy') as LANDED_ON,FORMAT(RECDATE,'dd/MM/yyyy') as RECDATE,* from [Sheet1$]"; ExcelCommand = new […]

c#导入excel文件

我在我的asp.net项目中导入Excel到数据表。 我有下面的代码: string excelConString = string.Format( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" + "Extended Properties='Excel 8.0;" + "IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text;'", filepath); using (OleDbConnection connection = new OleDbConnection(excelConString)) { connection.Open(); string worksheet; worksheet = "Sheet 1$"; string connStr; connStr = string.Format("Select * FROM `{0}`", worksheet); OleDbDataAdapter daSheet = new OleDbDataAdapter(connStr, connection); DataSet dataset = new DataSet(); DataTable table; table = new DataTable(); […]

如何更新excel文件与oleDbDataAdapter.Update(myDataSet)

我不断得到一个InvalidOperationException(“更新需要一个有效的UpdateCommand与修改后的行传递DataRow集合”)。 我只是不能解决更新命令有什么问题。 这是我迄今为止的代码: OleDbConnection connection; OleDbDataAdapter clientsAdapter new OleDbDataAdapter(); DataSet myDataSet = new DataSet(); public void Setup() { connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Clients.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"; connection = new OleDbConnection(connectionString); connection.Open(); // SQL clientsAdapter.SelectCommand = new OleDbCommand("SELECT * FROM [Clients$]", connection); OleDbCommand updateCmd = new OleDbCommand( "UPDATE [Clients$] " + "SET " + "[Family Name] = […]

为什么OleDbDataAdapter.Fill()非常慢?

我正试图build立一个应用程序,将读取一个Excel文件(.xlsx,.xls)。 不幸的是,OleDbDataAdapter.Fill()的性能出乎意料的糟糕。 我花了2分钟时间从文件中读取一条logging。 有关该文件的更多信息: 大小 – 257MB 专栏 – 104 行数 – 1 000 000 我目前使用的代码来读取文件: string conStr = string.Empty; string strQuery = string.Empty; switch (extension) { case ".xls": //Excel 97-03 conStr = @"Provider=Microsoft.Jet.OleDb.12.0;Data Source=" + file_source + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';"; strQuery = "SELECT " + col_no + " * FROM [" + workbook + […]

OleDbDataAdapter.Update返回行,但没有行添加到Excel电子表格

我可以一行一行地将行添加到Excel电子表格中,但速度却非常慢(对于400条logging,即使使用Prepare,也只需要1分钟)。 所以,我知道Sql是有效的,DataTable是好的。 代码工作: public void InsertFromDataTable(string strSql, DataTable dtTable, string strTableName) { if (m_oleDbHandler == null) { m_oleDbHandler = new OleDbHandler(m_strConnection); } //Do one row at a time since the DataAdapter did not work foreach (DataRow drRow in dtTable.Rows) { OleDbParmCollection cololedbParameters = new OleDbParmCollection(); foreach (DataColumn dcColumn in dtTable.Columns) { OleDbParameter odpParameter = new […]

具有不同数据types的数据源

我正在使用OleDbDataAdapter.Fill方法从Excel文档读取数据。 我明白这将数据读入一个DataTable。 我们如何处理Excel列中的数据可能具有不同数据types的情况? 例如,如果Excel列中的数据如下所示: 100 200 Some text 300 在DataTable列(正在加载数据)中读取数据时,将被键入为double(因为列中的第一个值是一个数字)。 当它到达第三个值(“某些文本”),而不是将此文本添加到DataTable时,它将添加一个空(或空string)。 问题是我想知道Excel文件列中的值已被读入。 如果列已被​​input为double并且文本被忽略,我们如何捕获“Some text”文本?

导出到Excel .xlsx文件

我试图用这些代码导出xlsx文件: OleDbDataAdapter adapter = new OleDbDataAdapter(select, accessConnection); adapter.Update(dataTable); 连接string是 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AA\Desktop\work10.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES"; 我试图导出200000行到xlsx文件,但得到电子表格是完整的错误。 当我尝试打开Excel文件时,我得到的文件扩展名是无效的错误。 将.xlsx扩展名更改为.xls后,文件正在打开,但行数对我来说还不够。 Microsoft Access数据库引擎2010版本安装到计算机。 我该如何解决?