I am writing a program in c# and need to use excel for part of it. I don't feel like using com directly and would prefer to write a workbook extension in visual studio, but I am wondering if I can then access that extension from another program and let it do the excel work then send data back. And yes, I am very new to this.
Edit: Maybe there is a way to do this without excel, because all I need it for is to parse an html email to get its tables. If I could do this I would probably have it return a 2D array containing the data I need. If anyone has an idea on how to do it without excel, that is welcome too.
If you have microsoft office installed on a machine, then yes, you can access the Excel dlls from within a C# program in visual studio.
Programming this is not easy though.
Related
I'm currently busy with a task that involves both manipulating data in an excising excel document as well as the sheet itself.
In the past I've always used OleDbConnection and OleDbCommand to work with excel, but I've been reading about something called a Workbook and I'm not sure which way I should go about this.
Some examples of what I need to do include-
Inserting a new column
Deleting old columns
Setting a cell a certain colour depending on it's contents
Looking for duplicates and deleting them.
In your option which way would be the most efficient way to go about this.
Thanks
Best way would be to go with excel interop if you don't want to use any third party library.
Interop works and any action can be performed which you have mentioned in your question.
Refer this link for more info: http://csharp.net-informations.com/excel/csharp-excel-tutorial.htm
PS: above link is for c# and for interop to work ms excel must be installed on the system, this can be implemented in vb.net as well.
Hope this helps.
I have used Visual Studio Tools for Office, you will have workbooks, worksheets, columns, ranges, etc. Easy to manipulate using C#.
https://msdn.microsoft.com/en-us/library/bb608603.aspx
Install this package into your project Further no need to install Excel also this is fast mothod https://www.nuget.org/packages/ExcelDataReader/
I have an excel file that contains some methods written in VB I think.
I want to know any way makes me use these methods in C# code.
I tried to make a connection with the file using (System.Data.Odbc.OdbcConnection), and then use the UPDATE statement by using Command, but error toke place.
So does any one know how to do this?
I uploaded the file on :
Download The Excel File
I want to change C20 and C21, then get the data from C22:C29
thanks
What you are looking at is likely not VB.NET, but VBA (Visual Basic for Applications). VBA is an ancestor of VB.NET, and the language that is used for Excel macros. The bad news for you is, VBA isn't a .NET language, and you can't use C# for macros "attached" to a workbook.
If you are really motivated to use C#, your best option is to look into ExcelDNA, which among other things allows you to call .NET dlls from Excel.
However, I would really question the need to convert to C#, given the problem you describe. VBA is the "natural" language for lightweight Excel automation, and is fairly understandable. If you have existing code, just modify it. And one of the nice features of Excel VBA is the macro recorder, which allows you to record your interactions with Excel as VBA code, which is a great way to figure out how things are used in the object model.
Starting an innovation week at work here. Good ol' Excel project! So here's what we want. We want to be able to create user defined functions in Excel, just like Excel has the SUM, etc. we want to make our own.
These UDF's would take Excel data in, and they would then pass that data to a Web Service which would do what it needs to do and then return the data back. I know how the Web Services will act, but what I need some guidance on is preparing the data in Excel, setting up the UDF's, and dealing with the sending/receiving of the data in Excel. I've never done any Excel programming before.
At first glance, it seems I might not need to do any VBA work, and that I could almost create a plugin for Excel (generate a .xll file from C#), and then go about it this way, but I'm not really sure how this all works.
Am I approaching this right? Are there any other things I should keep in mind? Is there anything I should read up on (any good links)?
Thanks.
There are good articles like below on MSDN.
Article 1
Article 2
Videos on Youtube and other
Video 1
Video 2
You can call a WCF service from Excel with VSTO or with VBA
You will want to use VSTO to create an add-on for Excel. Using Visual Studio create a new project. Select Office and then Excel 2007 Add-on or Excel 2010 Add-on. Check out this great resource for examples on how to get started http://www.packtpub.com/article/microsoft-office-excel-programming-using-vsto it pretty much has everything you are asking for (except calling a web service).
It may be possible to do all of this in VBA but it won't be as easy and you'll have to deal with the security issues that come with it.
You could take a look at XLLoop. This is a framework for developing Excel UDFs on a remote server. It has server implementations in a range of languages and is open source with a liberal license.
(Full disclosure: I work on this project).
I'm writing a program that reads a text file, extracts information, and outputs it to a template Excel spreadsheet that already exists.
I've managed to do this on my computer using the Microsoft.Office.Interop.Excel reference and its related methods, and it works fine. I have Excel 2010. However the computers that this program will be used on mostly have either Excel 2000 or Excel 2003, and it won't work on them.
Does anyone know a way to make a program target all versions of Excel from 2000 upwards?
Cheers,
Greg
If your needs are simple and you don't have $900 for Aspose.Cells to throw around, you can do any of the following:
Use NPOI to read, inject data into, and export your template.
Create a basic HTML file with a table and just named it *.xls. You can save your template in Excel as HTML and replace bits and pieces to insert your data.
Create an XML file using Office 2002/2003 XML format, it's pretty straightforward (caveat: can't be read in Excel 2000). As above, you can save your template in XML Spreadsheet format, read it in, and do some simple stuff to inject your data.
You really need to target 2000 or under. 2010 and 2003 will open a 2000 format document whereas 2000 will not open a 2010 document. Office has a single format for 97-2000 and that's what you need to create to make everybody happy.
Interop depends on the version you have installed and I personally have dodged using interop due to its "unmanaged" nature (and it seems to love file locks).
If you want hassle free and extremely fast/powerful creation of Excel documents, you really can not do better than Aspose.Cells in my opinion.
Find it here.
I want to know what is the best practice to create a Excel 2007 Workbook using C#, with its datasource being a raw flat file or a table in database.
You can use
"Open XML SDK 2.0 for Microsoft Office"
It's more comfortable than harcore manually hacking OpenXML spec. There are .NET strongly typed wrapper classes so it's not hard to create a simple sheet. You don't need any interop and msoffice installed and it's safe for server soluitions - there are only a few dlls which you can ship in your solution.
I did mail-merge solution and it wasn't so scary.
But as always, when it's possible, I'm prefering plain csv format.
I personally like creating CSV's, which can be opened directly in Excel. It's a lot less work than trying to hack the Office Open XML specification, and you don't need COM interop to Excel (which requires a copy of Excel to work).
You can use the Office Primary Interop Assemblies to completely automate Excel 2007, and create the workbook from within C#.
This gives you the most control, as you have complete control over how you map from DB or flat file -> Excel workbook/worksheet.
I am using
http://www.leniel.net/2009/07/creating-excel-spreadsheets-xls-xlsx-c.html
for creating excel . Seems good so far.