C# in Excel avoiding VBA - c#

is there a way to use C# in Excel? I mean using C# to automatize excel spreadsheet doing what it is already possible with the VBA editor. I usually use excel for my job tasks but the only programming language I know is c# and I don't want to start with VBA now.

Try this library :ClosedXML
You can almost do everything on that library, and you don't need to have office installed.

Related

How do I run vba scripts embedded in a spreadsheet in .Net?

We have a .Net/C# based web service.
Within the service, we use a spreadsheet as a calculationr engine.
We're using Apose.Cells for .Net to populate the spreadsheet cells.
Calculations are performed through VB script embedded in the spreadsheet.
To be able to generate results, I need to be able to run/trigger the VB script.
Aspose does not seem to support this functionality.
It can poke/retrieve data and force recalc of any formulae that exist in the spreadsheet, but not run macros/VB script.
Once I've uploaded the desired data into the spreadsheet, how do I run the macros through .Net?
Thanks,
JohnB
Aspose.Cells cannot run macros. Besides, we are afraid, there is no server-side solution for your problem too. However on client-side (local machine) you can execute macros using Microsoft Office APIs. Please use the namespace
i.e
using Excel = Microsoft.Office.Interop.Excel;
Here is an example how to make use of it.
https://social.msdn.microsoft.com/Forums/Lync/en-US/2e33b8e5-c9fd-42a1-8d67-3d61d2cedc1c/how-to-call-excel-macros-programmatically-in-c?forum=exceldev
Note: I am working as Developer Evangelist at Aspose

How to use Excel Sheet contains functions in C# code?

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.

Accessing managed code extensions in a excel workbook

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.

c# read excel worksheet

Could someone help me read a simple excel worksheet in c# app? I'd like to be able to iterate each row and have a handle on each of the columns.
Thanks,
rod.
This one is the easiest method I have found:
Create Excel (.XLS and .XLSX) file from C#
The general method is to use Excel COM Interop. A quick google will find plenty of tutorials. Here's one for creating a sheet - it should point you in the direction (reading is pretty much the same).
An alternative method is to use ADO.Net. This is only really viable if your Excel sheet is well formed as a table ( ie. Database), but is easier than the interop approach.
Here is a sample using OLEDB
http://www.techiesweb.net/2009/12/reading-records-excel-file-insert-database-aspnet/
If you are going to open Excel 2007 or 2010 workbook (ooxml format), you can download Open XML SDK 2.0 for Microsoft Office (which doesn't require you to have MS office installed).
While Excel COM Interop works, it requires Excel to be installed on the client machine. If that isn't an issue then all good, but if it is you might consider looking at the Aspose.Cells library (no affiliation, just used them before). They're simple and powerful, although do carry a commercial license cost.
I've used ADO.NET and Jet in the past. Be warned that if you have columns that aren't obviously of one type you will see weird things happen. Jet tries to assign a datatype to a column based on the first several vales. The nice thing is that you can query the spreadsheet like it is a table.

What is the best practice to create a Excel 2007 Workbook

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.

Categories

Resources