Tag: oledbdataadapter

从Excel中读取列,重新格式化单元格

我目前正在尝试从excel电子表格中读取单元格,而且当我不想要时,它似乎会重新格式化单元格。 我希望它通过计划文本。 我已经阅读了这个问题的几个解决scheme,我已经实现了他们,但我仍然有同样的问题。 读者将数字和数字的date变成date。 例: 2016年1月29日,星期五出来:42398 和 40.00出来是:2/9/1900 12:00:00 AM 码: string stringconn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + files[0] + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\""; try { OleDbConnection conn = new OleDbConnection(stringconn); OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [CUAnswers$]", conn); DataTable dt = new DataTable(); try { printdt(dt); 我努力了 IMEX=0; HDR=NO; TypeGuessRows=1; 这是我打印出来的表格 public void printdt(DataTable dt) […]

OleDbDataAdapter.Fill(DataTable)不能处理大的xls文件大小

我试图得到一个DataTable ,阅读一个.xls文件。 如果我使用大小为25kb的.xls文件运行下面的代码,它工作正常,但如果我加载一个更大的文件(7.52MB),它不起作用。 string filenamePath = System.IO.Path.Combine(Server.MapPath("/Uploads"), FileUpload1.FileName); FileUpload1.SaveAs(filenamePath); string[] validFileTypes = { "xls", "xlsx"}; string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName); bool isValidFile = false; string fileName = FileUpload1.FileName; for (int i = 0; i < validFileTypes.Length; i++) { if (ext == "." + validFileTypes[i]) { isValidFile = true; break; } } if (isValidFile) { DataTable dt […]

从Excel文件通过OleDbDataAdapter方法(C#)古怪的select

我有这样一个Excel文件: Column 1 Column 2 Column 3 data1 data2 data1 data2 data1 data2 data1 data2 data1 data2 data3 也就是说,除了最后一行,整个列3是空的。 我通过OleDbDataAdapter访问Excel文件,返回一个DataTable:这是代码。 query = "SELECT * FROM [" + query + "]"; objDT = new DataTable(); objCmdSQL = this.GetCommand(); objCmdSQL.CommandText = query; objSQLDad = new OleDbDataAdapter(objCmdSQL); objSQLDad.Fill(objDT); return objDT; 重点是,在这种情况下我的代码返回一个DataTable只有列1和列2。 我的猜测是,JET引擎试图根据每列中第一个单元格的types来推断列types; 作为第一个值null,整个列被忽略。 我试图填充零,这个代码实际上是返回所有三列; 这显然是最不可取的解决scheme,因为我必须处理大量的小文件。 反转select范围(从“A1:C5”到“C5:A1”)也不起作用。 我正在寻找更优雅的东西。 我已经find了一些讨论types不匹配的post(int列中的varchar单元格,反之亦然),但实际上并没有find与此相关的任何内容。 […]

OleDbDataAdapter不从服务器中的Excel中读取所有数据但在本地系统中正常工作

我有问题使用C#从Excel中读取数据(它包含超过30,000行)。 当我在本地系统testing它工作正常,即它复制从Excel中的所有行,但是当我部署和运行在生产服务器,它只能读取约12,000行)。 我也尝试过使用BulkCopy,但是也一样。 它是否必须做任何与networking服务器(我的networking服务器是Windows Server 2008)? 请帮助我。 谢谢 protected void ImportFromExcelToTempCompetitionTable(string filename) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0; " + "Data Source=" + filename + ";" + "Extended Properties=Excel 12.0"; OleDbDataAdapter cmdOle; cmdOle = new OleDbDataAdapter("SELECT [StringColA], [StringColB], [NumberCol1], [NumberCol2] from [XYZSheet]", strConn); try { Boolean blnSuccess = false; DataSet ds = null; ds = new […]

Excel文件 – 它已经由另一个用户专门打开,

我正在阅读使用C#的Excel文件,下面是正在按预期工作的代码除了每次运行应用程序,我必须closuresExcel文件,否则我会得到下面的错误信息: The Microsoft Access database engine cannot open or write to the file ''. It is already opened exclusively by another user, or you need permission to view and write its data.. 我的问题是:有没有办法我closuresExcel文件,一旦我读完了? public static DataTable LoadExcelWorkbook(string workbookName) { OleDbConnection connection; string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", EXCELFILENAME); string query = String.Format("select * from […]

如何将大型Excel文件导入到数据表?

我有一个500列的Excel文件。 我正在使用OLEDB将其导入到DataTable中。 但是DataTable只包含前255列。 我无法弄清楚为什么其余的列没有被导入。 我的代码是 public DataTable ToDataTable() { DataSet dsEmpMaster = new DataSet(); DataTable dtEmpMaster = null; string strConnectionString; string strSql; string FileNameWithPath = String.Format("{0}\\{1}", System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName), _FileName); try { dtEmpMaster = new DataTable(); strConnectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", FileNameWithPath); strSql = String.Format("SELECT * FROM [{0}$]", _SheetName); OleDbDataAdapter adpMasterData = new OleDbDataAdapter(strSql, strConnectionString); adpMasterData.Fill(dsEmpMaster); […]

在C#中读取Excel文件时如何解决“不是合法的OleAutdate”?

我一直在使用excel电子表格,到目前为止,我从来没有遇到任何问题。但是,当我尝试读取excel文件时,这个错误“不是合法的OleAutdate”显示出来。 有谁知道我可以如何解决这个问题。 这里是我用来读取Excel的代码,并把数据放入数据集。 它以前工作得很好,但是在我对数据源进行了一些修改(不涉及date)之后,这个错误就出现了。 var fileName = string.Format("C:\\Drafts\\Excel 97-2003 formats\\All Data 09 26 2012_Edited.xls"); var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName); var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString); DataSet Originalds = new DataSet(); adapter.Fill(Originalds, "Employees"); // this is where the error shows up

使用.xlsx扩展名导出Excel文件

我试图用这些代码导出xlsx文件: DataTable dataTable= new DataTable(tableName); OleDbDataAdapter adapter = new OleDbDataAdapter(select, accessConnection); adapter.FillSchema(dataTable, SchemaType.Source); foreach (DataRow result in dtResult.Rows) { DataRow newRow = dataTable.NewRow(); foreach (DataRow drAssign in dtAssignment.Rows) { newRow[drAssign["Destination"].ToString()] = result[drAssign["Source"].ToString()]; } dataTable.Rows.Add(newRow); } 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"; 我试图导出100行到xlsx文件。 当我尝试打开excel文件时,我正在获取 'Excel无法打开test.xlsx,因为文件格式或文件扩展名无效。 validation该文件是否已损坏,并且文件扩展名与文件的格式相匹配 错误。 将.xlsx扩展名更改为.xls后,文件正在打开。 但是xlsx选项必须在不改变扩展名的情况下工作。 计算机上安装了Microsoft Access数据库引擎2010版和Office Professional Plus 2013。 我怎么解决这个问题?

Excel中使用数据适配器更新.NET中的ACE超时

我遇到了将数据集中的数据写入Excel电子表格的超时问题。 这是我的连接string目前: <add key="ExcelConnectionStringHeader" value="Provider=Microsoft.ACE.OLEDB.12.0;Connect Timeout=30;Extended Properties=&quot;Excel 12.0;HDR=YES&quot;;Data Source="/> Connect Timeout属性似乎不被提供者支持。 Connection Timeout,Timeout,ConnectionTimeout,ConnectTimeout等都没有。我的代码创build了一个Data Adapter和InsertCommand,并从数据集中进行更新。 这很好,除非Update命令本身超过15秒,这是默认的OleDb超时。 这就是为什么我试图设置它在连接string。 我已经将CommandTimeout从30的默认值增加了,但这真的是无关紧要的。 以下是我的代码: OleDbDataAdapter da = new OleDbDataAdapter(szHeaderSelect, oCnn); // Ratings_Test — Loan_Test$A1:F1]", DataSet dsTest = new DataSet(); da.InsertCommand = new OleDbCommand(szNewSQL + "(" + szColumns + ") " + "VALUES ( " + szParams + ")", oCnn); da.InsertCommand.CommandTimeout = […]

如何使用OleDbDataAdapter从Excel文件中的任何电子表格中进行select

我正在使用OleDbDataAdapter从Excel文件中提取数据集,但我有SELECT语句里面的问题 DataSet excelDataSet = new DataSet(); using (OleDbConnection con = new System.Data.OleDb.OleDbConnection(connectionString)) { con.Open(); OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter("select * from [Name of spreadsheet]", con); cmd.Fill(excelDataSet); con.Close(); } 如果您看到“我"select * from [Name of spreadsheet]" ,但是我需要获取任何电子表格或第一个电子表格,但是此电子表格的名称可以是任何内容。 如何指定它? 是否有任何特殊字符,如"select * from [%]"