Tag: oledbdataadapter

Excel到网格查看使用OleDbDataAdapter的问题

我正在使用Visual Studio 2010创buildWindows窗体应用程序。 我使用OleDbDataAdapter方法将数据填充到Excel文件的DataGridView中。 这是我的代码 dataGridView1.DataSource = null; dataGridView1.Update(); var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=No;IMEX=1\";", fileName); var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString); var ds = new DataSet(); DataTable t = new DataTable(); adapter.Fill(t); dataGridView1.DataSource = t; 现在的问题是,如果某些单元格合并在Excel文件输出获取位不同。 这是更好的理解的形象。 那我该如何解决这个问题呢? 我想如果我能确定合并单元格然后我可以解决这个问题。 但目前我还没有一个清晰的想法。 有没有更好的方式来表示在Excel视图中的Excel数据,因为它是在Excel文件中? 任何答案将是帮助。 请分享任何build议。 谢谢 勒芒

“外部表格不是预期的格式”

我尝试用Excel数据填充DataSet(通过OpenXML库来获取表名),但有时我得到错误:“外部表格不是预期的格式”。 所以,我使用相同的文件= * .xlsx(我通过Excel 2010将它从* .xls转换为* .xlsx)。 昨天工作正常,但现在它不工作: public DataTable CreateTable(string sheetName) { sheetName = sheetName + "$"; bool hasHeaders = false; string HDR = hasHeaders ? "Yes" : "No"; string strConn; if (_filePath.Substring(_filePath.LastIndexOf('.')).ToLower() == ".xlsx") strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _filePath + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\""; // strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" […]

包含'。'的Excel列名 转换成 '#'

我正在导入一个Excel文件,并试图让相同的数据集。 问题是,如果列名包含. 例如,如果导入后列名是Sr. No. ,则DataSet中显示的列名是Sr# No# 。 以下是代码: public DataSet ConnectExcel(string filetable) { DataSet ds = new DataSet(TABLE_NAME); string excelConnectionString; string extension = Path.GetExtension(filetable); if (extension == ".xls") { excelConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES\"", strCSVFilePath); } else { excelConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 xml;HDR=YES;\"", strCSVFilePath); } System.Data.OleDb.OleDbConnection oleDBCon = new System.Data.OleDb.OleDbConnection(excelConnectionString); try { […]

通过OleDbDataAdapter将excel数据导入到数据表中将方括号replace为圆括号

我使用这段代码来导入Excel(.xls)数据,但列中的所有方括号都被replace为圆。 例如列dm [kg]: import前:dm [kg] import后:dm(kg) 我会感谢任何帮助。 public static DataTable ImportWorkSheet(string excelFile, bool hasHeaderRow, bool allText, string tabName) { string connectionString = GetExcelConnectionString(excelFile, hasHeaderRow, allText); using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); if (Path.GetExtension(excelFile).Equals(".csv", StringComparison.OrdinalIgnoreCase)) tabName = Path.GetFileName(excelFile); else tabName = EnsureTableName(connection, tabName); string selectString = string.Format("SELECT * FROM [{0}]", tabName); DataTable table = […]

有没有可能使用OleDbDataAdapter查询Excel行号

有没有可能使用OleDbDataAdapter来查询Excel行号? 图片在这里 OleDbCommand objCmd = new OleDbCommand("Select *, [Sheet1$].ExcelLineNumber From [Sheet1$]", objConn); OleDbDataAdapter objDatAdap = new OleDbDataAdapter(); objDatAdap.SelectCommand = objCmd; DataSet ds = new DataSet(); objDatAdap.Fill(ds); 结果应该是 Column A | column B | Column C | ExcelLineNumber 1 pong 13 5 2 pong 2 6 ………… 是可能的? 如果没有,有没有办法解决这个问题? 我一直在尝试很多东西,但可能会消耗太多的性能

OleDbAdapters不会从单个Excel列中以不同格式读取date

我正在阅读我的应用程序中的excel文件。 我使用OleDbDataAdapter来读取和DataTable来存储.xlsx文件的logging。 我有阅读单列不同date格式的问题。 我的专栏是这样的: 2014-02-07 2014-02-05 27.01.2014 19.11.2013 2014-02-07 2014-02-07 我的程序只加载“yyyy-MM-dd”格式的date,其余的都是DBNull.Value。 有没有什么办法读整列作为string(所以我可以操纵他们manualy)或强制OleDbDataAdapter读取所有date? 那是我的代码: var fileName = string.Format(@"C:\28.xlsx"); var connectionstring = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0 xml;HDR=NO;IMEX=1'"); var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$B12:L]", connectionstring); var ds = new DataSet(); adapter.Fill(ds, "anyNameHere"); System.Data.DataTable data = ds.Tables["anyNameHere"]; foreach (DataRow row in data.Rows) { […]

$符号从Excel文件中的值中删除

我有一个名为Price的专栏文件 价钱 $ 200 $ 250 €50 我正在使用下面的代码从我的Excel表格中读取数据到DataTable中。 OleDbDataAdapter adp = new OleDbDataAdapter("select * from [Sheet1$]", Connstr); adp.Fill(dt); 当我在价格列中检查我的DataTable时,我得到以下输出 价钱 200 250 空值 所以它所做的就是删除$符号和带有€符号的单元格,它完全忽略了该单元格中的数据,并且在这些单元格中我没有任何价值。 请提出一个解决办法。 提前致谢。

数据适配器填写电子表格不添加所有列

我试图通过使用OleDbDataAdapter类基于电子表格内容创build一个数据表。 我有57列,没有什么看起来不规则的第57列,但从第57列的数据不会增加。 第1-56列添加。 我已经使用这个代码多次列<57,但是当用户添加第57列时,它仍然只添加56.这是代码: using (OleDbDataAdapter oda = new OleDbDataAdapter()) { try { DataTable dt = new DataTable(); cmd.CommandText = "SELECT * FROM [" + sheetName + "] WHERE (Select Count(*) from [" + sheetName + "])>0"; cmd.Connection = conn; oda.SelectCommand = cmd; oda.Fill(dt); conn.Close(); return dt; } catch (Exception e) { Debug.Print("Error in sheet […]

如何避免使用Excel文件中的数据从DataTable中删除非浮点值?

我正在使用下面的代码从Excel文件中获取一个DataTablevariables与工作表的信息: // Just a few examples about connectionString and Excel's file path: string pathFile = @"C:\Windows\MyFolder\myExcelSample.xlsx"; string excelConnString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathFile + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';"; using (OleDbConnection objConn = new OleDbConnection(cadenaConexion)) { objConn.Open(); OleDbCommand cmd = new OleDbCommand(); OleDbDataAdapter oleda = new OleDbDataAdapter(); DataSet ds = new DataSet(); DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); […]

将Excel导入到Datagrid

我试图把一个excel文件放到我的程序中,这样我可以处理数据并导出它。 我正在使用OleDB访问访问文件,并试图将其传递给一个数据表,以便我可以查看它并使用它在一个winform中。 这是我正在使用的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient; using System.Data.OleDb; using System.Windows; using System.Windows.Forms; using System.Globalization; using System.Runtime.Versioning; using System.Threading; namespace DataImportServices { public class ExcelImport : IDataImport { public DataTable ImportData(OpenFileDialog openFile) { var dataTable = new DataTable(); string query; var hasHeaders = false; var […]