Tag: ado.net

用VB中的Excel数据填充DataGrid列

好吧,我终于得到这个代码工作几个小时后,工作: Dim path As String = OpenFileDialog1.FileName Dim myDataset As New DataSet() Dim strConn = New OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & path & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1""") Dim myData As New OleDb.OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn) myData.Fill(myDataset) DataGridView1.DataSource = myDataset.Tables(0).DefaultView 现在我明白了,我将尝试将数据放在特定的位置。 在我的应用程序,我有一个datagridview设置4列。 我想要做的是将excel文件的列A放在datagridview的第一列和datagridview的第二列中的Excel文件的C列下。 所以replace: DataGridView1.DataSource = myDataset.Tables(0).DefaultView 有: DataGridView1.columns(0) = myDataset.Tables(0).columns(0) DataGridView1.columns(1) = myDataset.Tables(0).columns(2) 显然这不工作,有些东西告诉我,我可能需要一个for循环导入数据,但我从来没有从Excel文件导入信息之前,使情况变得更糟,我从来没有与datagridviews之前,所以我不知道如何去做这个。 我想这样做,如果我能: For x […]

ADO.NET +大量插入+ Excel + C#=“不好的时间”?

基本上我需要插入一堆数据到Excel文件。 创build一个OleDB连接似乎是最快的方式,但我已经遇到了内存问题。 进程使用的内存似乎不断增长,因为我执行INSERT查询。 我已经缩小到只有当我输出到Excel文件(内存保持稳定,没有输出到Excel)时发生。 我closures并重新打开每个工作表之间的连接,但这似乎没有影响内存使用情况(如同Dispose())。 数据写入成功,因为我可以validation相对较小的数据集。 如果有人有洞察力,将不胜感激。 initializeADOConn()在构造函数中被调用 initADOConnInsertComm()创build插入参数化插入查询 writeRecord()每当写入新的logging时被调用。 新的工作表是根据需要创build的。 public bool initializeADOConn() { /* Set up the connection string and connect.*/ string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + this.destination + ";Extended Properties=\"Excel 8.0;HDR=YES;\""; //DbProviderFactory factory = //DbProviderFactories.GetFactory("System.Data.OleDb"); conn = new OleDbConnection(connectionString); conn.ConnectionString = connectionString; conn.Open(); /* Intialize the insert command. */ initADOConnInsertComm(); […]

是否有可能通过ADO.NET访问没有标题行的Excel文件?

我有一个格式化的Excel文件,我无法控制,我需要阅读其中包含的信息。 该文件的问题是,前几行包含格式化信息,我不能修改该文件,也不能要求格式更改。 那么可以通过ADO.Net来读取这样的文件吗? 提前致谢,

如何防止ADO.NET从Excel文件读取时更改双精度值

我在Excelinput文件中有以下几行: Column1 Column2 0-5 3.040 6 2.957 7 2.876 和下面的代码使用ADO.NET来读取它: string fileName = "input.xls"; var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName); var dbConnection = new OleDbConnection(connectionString); dbConnection.Open(); try { var dbCommand = new OleDbCommand("SELECT * FROM [Sheet1$]", dbConnection); var dbReader = dbCommand.ExecuteReader (); while (dbReader.Read()) { string col1 = dbReader.GetValue(0).ToString(); string col2 […]

无法连接到SQL Server,但Excel和ODBCconfiguration可以

我有一个C#程序连接到SQL Server。 它在SQL Server 2012的testing计算机上正常工作,但在2008年的生产环境中无法正常工作。在生产环境中,它会报告exception, 未处理的exception:System.Data.SqlClient.SqlException:build立到SQL Server的连接时出现networking相关或站立特定的错误。 服务器未find或无法访问。 validation实例名称是否正确,并将SQL Serverconfiguration为允许远程连接。 (提供程序:命名pipe道提供程序,错误:40 – 无法打开连接到SQL Server) – – > System.ComponentModel.Win32Exception:访问被拒绝 这里是我的连接代码, connStrSql = "Server=" + sqlserver + "; Database=" + sqldb + "; Trusted_Connection=True"; SqlConnection sqlConn = new SqlConnection(connStrSql) sqlConn.Open(); 目标平台是x86,目标框架是4.5。 有趣的是,Excel和ODBCconfiguration可以连接到数据库没有抱怨。 C#程序是否使用不同的方式连接到SQL Server? 我该如何解决这个问题?

用ADO.NET写一个空白的Excel表

我正在尝试使用ADO.NET连接并写入一个Excel文件。 我用默认的Excel表格创build了一个空白文件(我也试过用自定义表格)。 出于某种原因,我无法将一整行数据写入工作表。 如果我创build一个新的工作表,它工作正常,但是,我有太多的工作表,我无法删除任何工作表。 有没有什么特别的,你需要做一个数据写入一张白纸? 我试着做: path= the path including my file. connString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=NO;\"", Server.MapPath(path)); dbCmd.CommandText = "Update [Sheet1$] Set F1 = 'Col1', F2 = 'Col2', F3 = 'Col3', F4 = 'Col4'"; dbCmd.ExecuteNonQuery();

通过OleDb Excel显示数字不同…取决于电子表格是否打开?

我打开Excel工作表到一个使用OleDb DataTable像这样: string select = string.Format("SELECT * FROM [{0}$]", worksheetName); using (var con = new OleDbConnection(connectionString)) using (var adapter = new OleDbDataAdapter(select, con)) { con.Open(); var dt = new DataTable(); adapter.Fill(dt); con.Close(); return dt; } 然后循环遍历DataTable的各行读取各种数据,如下所示: decimal charge; bool isChargeReadable = decimal.TryParse(row["Charge"].ToString(), out charge); 我刚才发现,我的代码在美元数量的单元格上窒息,例如“$ 1100.00”,它不能parsing为十进制数。 没有那么令人惊讶,只是这是刚刚完成工作的代码。 进一步的调查显示,如果我在工作簿打开的情况下运行此代码,则会将其中一个单元格视为“1100”。 如果我在工作簿closures时运行它,则会看到“$ 1100.00”。 为什么发生这种情况? 很明显,我将不得不重做我的代码才能在工作簿closures的情况下运行,但是为什么它会起作用呢? 我会认为这只是读取保存的工作簿。 我正在使用的连接string是… "Provider=Microsoft.Jet.OLEDB.4.0; […]

阅读excel文件没有办公室beeing安装

有没有办法在Excel中读取Excel(2003)文件没有安装办公室beeing安装,甚至可能没有任何第三方库? 为了能够使用VSTO我想办公室需要安装,对吧? 但是,ADO.NET如何(例如Microsoft.Jet.OLEDB.4.0,Extended Properties=Excel 8.0 )? 是否需要安装Office beeing? 我也可以阅读这些对单元格的评论:

使用OleDbConnection :: GetOleDbSchemaTable()列出Excel表

以下PowerShell代码片段将通过OleDbConnection.GetOleDbSchemaTable()列出Excel电子表格中的所有工作表和命名范围: $file = "C:\Users\zippy\Documents\Foo.xlsx"; $cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=`"$($file)`";Extended Properties=`"Excel 12.0 Xml;HDR=YES`";"; $cn = New-Object System.Data.OleDb.OleDbConnection $cnStr; $cn.Open(); # to list the sheets $worksheets = $cn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::Tables,$null); $cn.Close(); $cn.Dispose(); $worksheets | Format-List; 但是,这不会列出表(在Excel 2003中称为列表)或引用列表的命名范围。 如果我传递一个types为“程序”或“视图”的OleDbSchemaGuid , Operation is not supported for this type of object. MethodInvocationException ,并且Operation is not supported for this type of object.消息Operation is not […]

间歇性问题 – OleDbConnection.Open()抛出System.Data.OleDb.OleDbException:未指定的错误

我们组织中的生产应用程序使用Excel 2003文件通过Web应用程序处理用户提交的数据。 这个应用程序在大多数情况下都可靠运行 最近,当调用OleDbConnection.Open()方法时,应用程序开始间歇性地抛出“System.Data.OleDb.OleDbException:Unspecified error”。 错误会一直持续到应用程序池被回收为止,届时所有的function都将如预期的那样运行。 在Windows应用程序事件日志中没有捕获错误。 ASP.NET Web应用程序位于Windows Server 2003 32位计算机上的WSS 3.0中的Web部件中。 该应用程序旨在防止任何并发问题。 系统functionID是唯一可以访问临时文件存储的帐户,并且内置了一些机制以确保文件在使用唯一命名约定和上载跟踪子系统进行处理期间不会被另一个上载覆盖。 任何有识之士将不胜感激。 我们正在使用以下代码从Excel 2003文件中检索数据: public static DataTable GetWorksheetData(string filePath) { OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder { DataSource = filePath }; builder.Provider = "Microsoft.Jet.OLEDB.4.0"; builder["Extended Properties"] = "Excel 8.0;IMEX=1;HDR=YES"; DataTable table = new DataTable(); try { // Creates an OleDbConnection for the […]