Reading An Excel Work Book - OLEDB Or Excel Interop
Mar 22, 2011
I need to read an Excel work book with 2 sheet which have more than 60,000 records. The application is an ASP.Net application so the performance matters.
Which approach should I take? Sohuld I do it using Microsoft.Office.Interop.Excel or should I do it using OLEDB in ADO.Net?
How can I configure my asp.net application to work with excel interop. I added a reference to my application but when I try and say Imports Microsoft.Office.Interop.Excel it doesnt work.
Recently deployed my web app on Windows Server2008, IIS7 (with Office installed). After chasing (& catching) various other errors, I'm facing one I'm not sure even where to begin.
On Cassini (visual studio dev server) everything worked flawlessly (reading excel through excel interop).
On w2008 IIS it throws vague error:
Value cannot be null. Parameter name: o [ArgumentNullException: Value cannot be null.....
Currently, I'm going to add null check and see if things get better but I do suspect that it just blows up and disposes on finally block before it even starts reading anything.
Tried to set application pool to run under localsystem, but that didn't change anything.
In my asp.net page, I am creating excel file using Office.Interop and saving. The application works correctly in my local. When I am deploying in Win 2003 server I am getting below Error. I don't have excel installed in server.
Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005
I am creating a pivot table excel sheet in my ASP .NET web application using Microsoft Office Interop Excel 12.0 components. It is creating the excel file correctly, when i run it from my Visual Studio 2008 in Debug/Release mode.
But when i deploy the solution in IIS 7, first i got some permission issues, which i resolved by giving permission in the DCOMCNFG file. Now i am getting the following error, when trying to open the Excel file:
[code]....
These are the code which i used to open and close the excel application object
I wanto to create matrix report dynamically using Microsoft.Office.Interop.Excel.dll so that i can create pivot table and Report from this, how i can create these kind of repots where in user will drag and drop the details and it will create reports.
I got an error about OleDB. I just want my excel file import to Gridview. Here is my code.
string connstr = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:a.xls;Extended Properties=Excel 8.0;HDR=YES;IMEX=1"; OleDbConnection conn = new OleDbConnection(connstr); string strSQL = "Select * from [Sheet1$]"; OleDbCommand cmd = new OleDbCommand(strSQL, conn); DataSet ds = new DataSet(); OleDbDataAdapter da = new OleDbDataAdapter(cmd); da.Fill(ds); GridView1.DataSource = ds; GridView1.DataBind();
When i build project there is no error but when i run this project i got an error like this:
System.ArgumentException:Format of the initialization string does not conform to specification starting at index 47. Line 21: string connstr = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:a.xls;Extended Properties=Excel 8.0;HDR=YES;IMEX=1"; Line 22: Line 23: OleDbConnection conn = new OleDbConnection(connstr);
In my application, i have one fileupload control which will take excel file. I want to read this excel file and want to store in datatable. How will i do this. I am using visual studio 2008.
I have a scenario where I have to read an excel file to dump records in a mysql database. The code generates an exception Sheet1 not found. I have pasted the code below. Please let me know the solution to the exception. I have given the correct read/write/modify settings to my excel file.
if (fileUpload1.PostedFile.FileName.EndsWith(".xls") || fileUpload1.PostedFile.FileName.EndsWith(".XLS")) { string fileName = Server.MapPath(fileUpload1.PostedFile.FileName); string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0"; // Create the connection object OleDbConnection oledbConn = new OleDbConnection(connString); try { // Open connection oledbConn.Open(); // Create OleDbCommand object and select data from worksheet Sheet1 OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]" , oledbConn); // Create new OleDbDataAdapter OleDbDataAdapter oleda = new OleDbDataAdapter(); oleda.SelectCommand = cmd; // Create a DataSet which will hold the data extracted from the worksheet. DataSet ds = new DataSet(); // Fill the DataSet from the data extracted from the worksheet. oleda.Fill(ds, "RestaurantExcelData"); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { Response.Write("Data: " + ds.Tables[0].Rows[i].ItemArray[0].ToString() + ""); } } catch(Exception e1) { } finally { // Close connection oledbConn.Close(); } } else { Response.Write("File Not Excel (xls||XLS)"); }
But it shows me an errormessage when I run this query:
string query = "Select * from [IO_Definition$]";
IO_Definition is the name of the spreadsheet in my excel file. I also added the excel file to the App_Data folder of the website.
The error is:
The Microsoft Jet database engine could not find the object 'IO_Definition$'. Make sure the object exists and that you spell its name and the path name correctly.
The thing is, when I write the absolute path of the excel file in the connectionString it does work. Is there anyway I can make it work without writing the absolute path?
I am reading a CSV file created by Excel. the string I am reading needs to be encoded (it shows small boxes instead of hebrew characters) so I wrote a lil routine to convert the string -
Function encodeName(ByVal name As String) As String Dim src As Encoding = Encoding.UTF8 Dim dest As Encoding = Encoding.Default Dim srcBytes() As Byte srcBytes = src.GetBytes(name) Dim asciiBytes() As Byte = Encoding.Convert(src, dest, srcBytes) Dim mychars(dest.GetCharCount(asciiBytes) - 1) As Char dest.GetChars(asciiBytes, 0, asciiBytes.Length, mychars, 0) Dim asciiString As New String(mychars) End Function
From what I read FileStream.ReadLine reads the text with encoding UTF8 so I try to convert from UTF8 to Encoding.Default buy instead of little boxes I get question marks.
I am reading an excel file in C#.NET. The data is being read successfully but there is problem with some hyperlinks stored in the excel file. I can read their text but i dont know how to get the underlying link/url of the column. I couldnt find much help on google as well. if someone has worked in a similar situation please let me know what can be done.edit::: i am using OleDb namespace for establishing a connection with the Excel file so if someone can post a solution which applies to this situation
I am attempting to read data from an uploaded spreadsheet using ACE.OLEDB. The code, which is running fine on dev and test machines for XL2003/2007 reports "Exernal table is not in the expected format" error on connecting on the production server for XL2007 only.The code is
Dim connectionString As String = "provider=Microsoft.Ace.OLEDB.12.0;" _ & "Data Source='" & ImportData.FullName & "';Extended Properties=Excel 12.0;" LogWebActivity.LogThis("Entering POPSUKD, ConStr=" & connectionString, LogWebActivity.LogDetailLevel.DetailAndData) Dim con As New System.Data.OleDb.OleDbConnection(connectionString) LogWebActivity.LogThis("Dimmed con", LogWebActivity.LogDetailLevel.Debugging) Try Dim cmdSelect As New System.Data.OleDb.OleDbCommand("SELECT * FROM [" & WorksheetName & "$]", con) Dim adapter As New System.Data.OleDb.OleDbDataAdapter(cmdSelect) Dim dS As New Data.DataSet LogWebActivity.LogThis(cmdSelect.CommandText, LogWebActivity.LogDetailLevel.Debugging) con.Open() LogWebActivity.LogThis("Opened Connection", LogWebActivity.LogDetailLevel.Debugging) adapter.Fill(dS, WorksheetName) LogWebActivity.LogThis("Filled DataAdapter", LogWebActivity.LogDetailLevel.Debugging) _SKUS = dS.Tables(WorksheetName) LogWebActivity.LogThis("Set SKUS", LogWebActivity.LogDetailLevel.Debugging)
I have made an application to read data from an excel file and save to database "Access". It's working perfect except one thing that..There are 4 columns in excel file as :
Shop no owner address alternate member address permanent member address
For all fields i have kept same datatype in database as "text". As in above image In Column A "shop no" in some rows there are same shop no with A,B,C classes. Now when I am uploading this excel file it saving all data, but in Column A cells which having only numbers would be saving to database eg: 185, 187, 188. And the cells which has both number and class eg: 185 A, 185 B would be reading as null values.