xll
ExcelDna
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
xll
-
Python GUIs
My guilty secret is to use Excel for my quick and dirty GUIs. I wrote a library to make that easy if you know C++. https://github.com/xlladdins/xll.
-
Show HN: I've built a C# IDE, Runtime, and AppStore inside Excel
Please tell Satya to show the ancient C SDK a little love. I'd hate to see this disappear: https://github.com/xlladdins/xll#fp-data-type
-
snitch v1.0 -- A lightweight C++20 testing framework
If you want to throw an exception instead of calling `abort` you can use https://github.com/xlladdins/xll/blob/master/xll/ensure.h When running in a debugger it can break execution when it fails and you can inspect the values of relevant variables.
-
I used C++ to embed sqlite into Excel
xll appears to be MIT according to the nuspec. xll_sqlite doesn't have a license, so the author hasn't given anybody to use it.
-
What are the best uses of C++?
Excel. C++ can be embedded in Excel and used interacively. It is more useful than old-fashioned python programming. I wrote something that makes this easy; https://github.com/xlladdins/xll
-
C Compiler Which Targets Excel (MS Office)
This is quite clever, and probably a joke that I'm not getting, but the Excel C SDK lets you call C/C++ from Excel and vice versa. This is one of my bread and butter tools, and I like nice tools, so I wrote a C++ wrapper around the SDK. It also lets you embed C++ objects in Excel: https://github.com/xlladdins/xll
-
What's the coolest thing you've created with c++?
A C++ library that lets you embed C++ objects in Excel. https://github.com/xlladdins/xll.
-
Creating an Excel Add-In in D
Welcome to my world: https://github.com/xlladdins/xll
ExcelDna
-
Show HN: I've built a C# IDE, Runtime, and AppStore inside Excel
Does this use https://excel-dna.net/ behind the scenes?
-
Issue with .tlb file in Excel
I would suggest to you to take a look into excel-dna, it's a pretty good project to build functions for excel. https://github.com/Excel-DNA/ExcelDna
-
US Equity Index Options Pricing and Scenarios
Not sure why paying for a plug-in that lets you call python functions in excel is still a thing anymore when there’s pretty activity community that integrates excel with .NET. From there it’s easy to use python. https://excel-dna.net
- Using C to Create Performant Excel Functions
-
Creating an Excel Add-In in D
I can try to give you an overview, but caveat emptor that I'm no expert.
The two historical programmatic interfaces to Office (that I'm familiar with):
VBA[1] - They have a pretty extensive VBA object model for the various Office programs, and is used for macros (either by auto-generated code when you "Record Macro" or manually developed code). The code lives within the Office file and follows it around, allowing it to be fairly portable since it doesn't require anything external to the file (unless you're calling out externally or relying on things like ODBC drivers).
You can also package up VBA into add-ins as well.
COM - There's an interopp assembly[2] that exposes a COM-based object model. This is the object model being used here (via Excel-DNA[3]), and the one hooked into by Visual Studio Tools for Office[4].
The biggest issue with both of these is cross-platform support – historically add-ins have been Windows only. COM isn't supported anywhere else, and VBA is only supported on Mac (not mobile). And the Mac VBA model isn't nearly as robust as the Windows version and has several caveats[5].
Enter Javascript, which is a relatively new option and what they're pushing hard get people onto. They've started developing an object model to expose the various Office apps via Javascript[6]. When you develop an add-in using this[7], the add-in is actually a webapp running in a sandboxed browser, with transparently handled interop between the add-in sandbox and the Office app. So all of the actual add-in development is HTML, CSS, and Javascript based.
The primary benefit of the Javascript option is that they're portable between the various platforms ([7] mentions Windows, Mac, Web-based, and the iPad. Not sure about Android/iPhone). But you get a lot of secondary benefits as well, such as the ability to have your add-in resources loaded from a remote website, ensuring things like the user always loading the latest version.
They've also slowly been making inroads in expanding the usage of Javascript - Office Scripts[8] is a preview feature they have right now, that effectively allows you to record macros in Excel for the web, which generate Javascript-based code rather than VBA code. You can also create user defined functions[9] in Javascript that can be mixed with normal functions within cells.
I (unfortunately) have to use Excel for many end-user deliverables, and have tinkered around with the Javascript options to make a few quality-of-life utilities for myself and others on my team. It's super handy for plugging into online services, and for being portable. I have one or two utilities for external teams that they access via Excel Online but I don't give them the file, and for others on the team we have several in circulation the Javascript-based stuff all "just works" in these contexts.
A major caveat of the Javascript stuff is that it all runs in sandboxed contexts and can primarily only interface between the Office host application and external services. COM and VBA-based add-ins don't have this constraint, and interact with other local resources beyond the host application itself.
On the plus side for the JavaScript option – in addition to being cross-platform, they're also not nearly as locked down in corporate environments because of their reduced security threat. But that limitation also means that it's unusable for solutions like this D in Excel add-in, which couldn't execute in that browser context and require the COM interop capabilities.
[1] https://docs.microsoft.com/en-us/office/vba/library-referenc...
[2] https://docs.microsoft.com/en-us/visualstudio/vsto/office-pr...
[4] https://docs.microsoft.com/en-us/visualstudio/vsto/create-vs...
[5] https://docs.microsoft.com/en-us/office/vba/api/overview/off...
[6] https://docs.microsoft.com/en-us/javascript/api/overview?vie...
[7] https://docs.microsoft.com/en-us/office/dev/add-ins/excel/ex...
[8] https://docs.microsoft.com/en-us/office/dev/scripts/resource...
[8] https://docs.microsoft.com/en-us/office/dev/add-ins/excel/ex...
[9] https://docs.microsoft.com/en-us/sharepoint/dev/general-deve...
Yeah, it's practically archaeology now! It is very fast for doing some things, though.
If anyone's interested in it from a Dot Net perspective, ExcelDNA [0] was excellent when I used it a few years ago.
What are some alternatives?
EPPlus
NetOffice - 🌌 Create add-ins and automation code for Microsoft Office applications.
NPOI - a .NET library that can read/write Office formats without Microsoft Office installed. No COM+, no interop.
ClosedXML - ClosedXML is a .NET library for reading, manipulating and writing Excel 2007+ (.xlsx, .xlsm) files. It aims to provide an intuitive and user-friendly interface to dealing with the underlying OpenXML API.
DocX - Fast and easy to use .NET library that creates or modifies Microsoft Word files without installing Word.
Open XML SDK - Open XML SDK by Microsoft
ExcelDna-Unpack - Command-line utility to extract the contents of Excel-DNA add-ins packed with ExcelDnaPack
Report-From-DocX-HTML-To-PDF-Converter - .NET Core library to create custom reports based on Word docx or HTML documents and convert to PDF
ExcelDataReader - Lightweight and fast library written in C# for reading Microsoft Excel files
MiniExcel - Fast, Low-Memory, Easy Excel .NET helper to import/export/template spreadsheet (support Linux, Mac)
PureExcel - A lightweight excel parser
dmd - dmd D Programming Language compiler