Read excel file with c# in 64-bit pc with Office 2003 - c#

I have a desktop application which has to read an excel file (either .xls or .xlsx).
When the application is installed in a Windows 7 pc with Office 2003 i cant read the excel file using Microsoft.ACE.OLEDB.12.0. I have the message that Microsoft.ACE.OLEDB.12.0 is not registered.
Using Microsoft.JET.OLEDB.4.0. doesnt help either.
So how can we read the excel file? I know one option is to build my application forcing it to compile to (x86) so it runs as a 32-bit application.
Ok, supposing i dont want to do so, is there any other option?
Thanks for any answers. Any comments are welcome!

You need the 64-bit JET/ACE driver installed:
http://www.microsoft.com/en-us/download/details.aspx?id=13255

Sounds like a job for Npoi. Stand alone library that can work with xls and xlsx files. No need to use those Jet libraries.
Ok, that will involve a bit of work, but you remove a dependency from something you can't control on user's machine.

Related

How to detect excel assembly (version) and use it programmatically in C#

I needed my application to export a dataGridView content to Excel. That's fine, all the help ended up by adding the Excel.Interop reference according to the installed version of Excel, then creating a new Excel Application and finally saving to a file (.xlsx).
However, it worked fine on machines with the same installed version of Office (Excel 2013). But, on machines with either 2007 or 2016 it does not work.
I know how to check which version is installed, but is there a way to detect and use the Interop no matter which version is installed? For example adding the DLL reference during runtime.
Thanks in advance

Saving and reading data from excel file(C# WPF)

I have to make a simple WPF application that manages and displays some data in form of objects(strings and ints). It needs to be saved in excel format, so that it can me manually opened and viewed by any user with Excel. But because not every user necessarily has Excel it needs to be independent from it. I found very few solutions but none worked for me. This works but as far as I know it needs Excel installed to run.
I use EPPlus for this purpose. http://epplus.codeplex.com/
It does not require that you have excel installed and is easy to use.
You can't use Microsoft.Office.Interop.Excel without having Microsoft Office installed.
You can use external libraries that allow xls or xlsx modification without Excel installed:
http://code.google.com/p/excellibrary/
http://simpleooxml.codeplex.com/ (only xlsx)

Update an excel sheet on Windows server 2012 with C#

I am writing an application where we need to update an existing Excel sheet through our system. I was able to do so on my local machine with OleDbConnection but when i deploy the application on server it gives me "operation must use an updateable query"
error on Windows server 2012.
I know its not recommended to install MS Office on Server and thats why its causing the issue. Any one has an idea whast the work around for this problem.
Do i have to give permission to my .net application so it can update the excel file or its something else?
Thanks in Advance.
I know its not recommended to install MS Office on Server
Last I checked, it is also a violation of the license terms (though that may have changed)
As you note, there are many reasons it is unwise to deploy Office to a server environment.
If you are using the newer (2007+) .xlsx file format exclusively, you can use the open source EPPlus library for most common Excel tasks. It is free, straightforward to use, and is designed to work on a server.
EPPlus is a .net library that reads and writes Excel 2007/2010 files using the Open Office Xml format (xlsx).

Checking for Excel dll and loading dynamically

I am using Microsoft.Office.Interop.Excel for writing data to an Excel file, I have Excel 2010 installed on my machine. But I need the program to run on older versions of Excel..
The program should check the version installed in the particular machine and load the dll dynamically so as not to get a Missing Reference error..
If Excel 2003 is available, use it.
Else If a higher Excel version is available, use it
Else show an error message since this means that Excel is not installed in the machine
Is there a way to do this?
I am really having a hard time looking for a solution. Any help would be appreciated.
Thanks in advance..
Use NetOffice (http://msdn.microsoft.com/en-us/library/bb417255%28WinEmbedded.5%29.aspx), it really provides a nice abstraction to all Office Versions.

using ms office com objects in other systems without have office installed

i wrote a app for reading excel files.i had to add some references to Microsoft office Com Objects.
it worked good in my system,but when i wanted to use it in other system in which does`t had ms office installed ,
i encounter a problem.i also carried dll files that has been added to project . what should i do ?
In order to use the relevant object libraries you'll have to make sure that Office (Excel in your case) is installed on your client machine. If you have the option I'd suggest to switch to the Open Office XML format anyways. I recently had a similar problem with MS Word and the +work to switch to the new format has def. payed of.
Check MS Open XML SDK
Performace++ and not depending on Office installed...
The Office COM objects depend on Office. You should either arrange for Office to be installed on the other systems, or use a component for reading Excel files that doesn't need Excel installed, such as the ODBC Excel driver or a third-party Excel file reader.

Categories