
Show HN: Turn an Excel file into a web application - visionPASSION
https://keikai.io/blog/p/currency-exchange
======
rb808
That link to ECB FX rates is the best thing on the page. A stable, free non-
commercial source of market data is hard to find.

[https://www.ecb.europa.eu/stats/policy_and_exchange_rates/eu...](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html)

~~~
nzealand
[https://fred.stlouisfed.org/](https://fred.stlouisfed.org/)

~~~
rb808
Awesome, cher bro.

------
o_nate
Not to be too nitpicky since it looks like the author is a developer and not a
writer, but referring to the person building the spreadsheet as the "admin
lady" throughout the piece sounds a bit awkward. Maybe just give her a made-up
first name?

~~~
natalyarostova
Looks like the author is from Taiwan, where the vernacular 'lady' is a common
suffix for admins. Although it's good feedback for someone marketing to a non-
Asian culture.

~~~
uranusjr
I am from Taiwan but have trouble reverse-translating this back to Chinese.
What is the vernacular title you are referring?

------
z3c0
I haven't tried this yet, but if it works well, the implications towards rapid
Business Intelligence development are great. In the past, when a user has
needed some 15-year-old, macro-infused spreedsheet turned into a more
streamline, business-wide process, any data entry components would require
roping in webdevs to get the job done, as BI developers don't usually come
with a web skillset. The idea that BI developers could just use the
spreadsheet to generate a web app not only cuts down the expertise needed, but
also solves the problem of training old-timers to use the new process.

~~~
peteradio
Lol, instead of one developer now you need two developers one who fucks with
spread sheets and one who jiggers the shitty tool to make the web app.

See basically "no dev needed", perfect for old timers who can't code. Or not.

private void placeAnOrder() { listSheet.unprotect(""); Range costCell =
spreadsheet.getRangeByName(exchangeSheet.getSheetId(), COST_CELL); if
(!costCell.toString().isEmpty()) { Double cost =
costCell.getRangeValue().getCellValue().getDoubleValue(); if (cost > 0) {
Double amount = spreadsheet.getRangeByName(exchangeSheet.getSheetId(),
"amount").getRangeValue().getCellValue().getDoubleValue(); Range
orderTable1stRow = spreadsheet.getRange(BOOK_NAME, listSheet.getSheetId(),
"C6:G6");
orderTable1stRow.getEntireRow().insert(Range.InsertShiftDirection.ShiftDown,
Range.InsertFormatOrigin.RightOrBelow);
orderTable1stRow.setValues(DateUtil.getExcelDate(new Date()), cost,
destinationCurrency, destinationRate, amount); } }
listSheet.protect(PROTECTION); }

~~~
dang
Can you please not be snarky in HN comments? You have a good point here, but
please follow the site guidelines.

~~~
peteradio
Ya I'll delete it if I can.

------
danny8000
You can do some of these tricks with Excel 2016 or later and SharePoint
Enterprise or Office 365 -- which many corporations already have.

You can embed an auto-updating Excel file in a SharePoint webpage using a
"webpart" that renders as HTML. (Microsoft is getting away from web-rendering
Excel with Silverlight,and allowing more functionality without the need for a
browser plug-in.)

The trick is to setup the Excel data connection using the "Get External Data"
-> "From Other Sources" -> "OData Data Feed" and not use the "Data Connections
/ Microsoft Query" method. Note: Microsoft Query connections won't update
server side, the Excel file needs to be opened, data connections refreshed,
and re-saved.

It does require a bit of Excel expertise to setup, but there is no need to
create a Java application to get it to run.

~~~
oneplane
I'd rather have my Java expertise than Excel expertise.

------
andreyazimov
Nice! Spreadsheets have a lot of advantages over coding your own website,
especially for people that don’t have the skills.

I made an app called [https://Sheet2Site.com](https://Sheet2Site.com) which
takes your spreadsheet of items/objects and translates it into an app, with
filters.

~~~
EGreg
Wait so what exactly is it?

Components of different types, corresponding to rows of different schemas?
Where first column says the type? Or is it one sheet per type of object?

And then you import them? And have a page with a bunch of components with data
from the sheet?

~~~
justusthane
There's a two minute intro video on the homepage that does a very good job of
demonstrating the product.

------
appleiigs
The first step should have been to call the bank. For businesses, banks
usually have a website that she could log into to: 1) get more up-to-date or
more indicative rates, 2) execute the trade. Will save dev & maintenance time.

~~~
bradknowles
Maybe they are the bank and everyone is calling them?

------
rorykoehler
They invented Google sheets api for excel. I've built apps using Google sheets
as the dB (via api). Slow but work well enough for personal tools

------
pier25
It amazes me to see companies big and small that basically run on Excel.

Why do you think Excel is so ingrained into all kinds of companies and
processes?

~~~
mmckelvy
\- Because a spreadsheet is the best UI for many business applications (far
better than an HTML table on a webpage).

\- Because Excel allows the user to (i) perform ad-hoc calculations, (ii)
audit the input and outputs, and (iii) easily modify the functionality in real
time.

\- People don't like filling out forms and most web apps are basically filling
out forms.

~~~
all2
Points 1 and 2 sound like a REPL.

Say we had a REPL that also had a table (like excel, each cell has an
address... a 2D stack if you will).

Say we interact using a mouse to select a cell or in the REPL to specify what
cell we want to write to. Then, if we use a Lisp, we have tabular code and
tabular data...

I might code this up for fun.

~~~
jimbosis
I don't know if it is what you are envisioning, but there is a spreadsheet
program called Scheme In A Grid (Siag) [1] (part of Siag Office [2]).

From the "Introduction" [3] of its Online Documentation: "Siag is an X-based
spreadsheet for Unix. It uses Scheme (a Lisp dialect) both for expressions and
as an extension language, which makes it easy to create new functions (for
native Lispers, that is). There is no requirement to know Scheme to use Siag,
expressions can be entered in traditional spreadsheet syntax as well."

[1] [http://siag.nu/siag/](http://siag.nu/siag/)

[2] [http://siag.nu/index.shtml](http://siag.nu/index.shtml)

[3] [http://siag.nu/online-docs/siag/intro.html](http://siag.nu/online-
docs/siag/intro.html)

~~~
all2
That's about what I imagined.

------
dlojudice
Excel is a great tool for MVPs. It's much cheaper to test internal automation
within a company with Excel than to build a entire platform, and some users
can do it without the need for professional developers.

------
edwinyzh
Congrats on the product! And what a coincidence, I'm about to launch a product
that 'Turns a (bunch of) Word files into static website':
[https://docxmanager.com](https://docxmanager.com)

We are both building a software basing on Office :)

------
chaz6
See also
[https://github.com/michaelneu/webxcel](https://github.com/michaelneu/webxcel)
a HTTP REST server built on top of Excel using VBA.

~~~
fzumstein
see also
[http://docs.xlwings.org/en/stable/rest_api.html](http://docs.xlwings.org/en/stable/rest_api.html)
for the Python version of the REST api. It doesn't require any VBA...

------
hiccuphippo
I didn't get if some of the code shown on the page is written as macros in the
Excel file itself or are all of them external. Some of it like the cell
protection stuff seemed like within the sheet?

It seems you still need to code the plumbing to get the sheet to work and
serve it in some webserver, so you might not be able to get rid of your
developers any time soon. And I didn't see any mention of it but it seems to
be using Java (since it mentions mvn in the example's GitHub page).

------
zarker
This does not work for me on chrome 74.
[https://keikai.io/demo/editor](https://keikai.io/demo/editor)

~~~
visionPASSION
There is a known issue that the current beta version works with only 100% zoom
level. Please check your browser and OS display zoom level and make it 100% to
try it out before the fixed version is uploaded.

~~~
Wistar
Speaking of zoom, it'd sure be nice if the keikai web site didn't kill zoom on
the ipad. Pretty hard to see the screen shots, etc.

------
kpennell
If you're using React, I wrote this short tutorial on how to use Google Sheets
in React apps: [https://appendto.com/2018/08/the-simple-stack-a-primer-on-
us...](https://appendto.com/2018/08/the-simple-stack-a-primer-on-using-react-
google-sheets-api/)

------
kevas
I can't wait to post what I've been building with Excel... from the reaction
here, there's going to be some cringing happening.

One thing that I've found amazing is that if you build from scratch, you can
have a cross-platform native desktop application that runs on software that's
pretty much installed on all company computers.

~~~
delusional
"Cross platform". If cross platform means "pretty much installed on all
company" then sure, but if it means ubiquitous among all platforms, then
decidedly know. Excel is a huge piece of software, and it will probably never
be cross platform, simply because it would take longer to port than the
lifespan of the platform you were to port it to.

~~~
kevas
You're correct in saying that Excel is not cross-platform, but I'm referring
to my application that lives on top of Excel. If the user is running Excel
16.0 64Bit, my app can run on Windows or Mac... does that not make it cross-
platform?

------
mandeepj
> Turn an Excel file into a web application

Why?

Just because you can do it, does not mean you should.

There is another group of people who favor storing html pages in a db.

~~~
Cederfjard
I think just wanting to do it is an excellent motivation for any intellectual
pursuit.

~~~
sixstringtheory
Probably very similar to my desire to climb mountains. I just wanna see what
it looks like on other side... aka curiosity.

If you’re only doing things other people tell you that you should, it’s worth
taking some time for self-reflection to figure out why, and to find out what
you _yourself_ are interested in.

Nature walks are great for that kind of thing :)

~~~
eye900
> ... my desire to climb mountains. I just wanna see what it looks like on
> other side... aka curiosity.

I wonder for some period of time why people like to climb, so I am excited by
your answer. Given all the documentaries, news and travel ads, one can
reasonably imagine what it looks like on the other side, don't we? Moreover,
its geometry would remain the same in one's life time, for any specific
mountain. One can get a pretty close idea from Google Map's terrain view. If
one is not that into the details, like the precise curvature for each piece of
a mountain, then they are largely the same.

I find myself not attracted to climbing for exactly the reason that they are
not different enough from each other to satisfy my curiosity.

~~~
sixstringtheory
Ah, I used to think this way, it’s kind of a “peakbagger” mentality... bag the
peak and move on. I’m all for seeing new mountains, and actually there is a
_ton_ of variation in what you can find due to altitude, aspect, geographic
location, etc etc. In the same valley I’ve walked down lush green forest on
one side, and walked up dry baking desert on the other. I think the more I’ve
trained my eye, the more unique qualities I see.

In the last year or two though I’ve realized that every climb is it’s own
experience, even on the same mountain. The season, the plants and animals that
come with it (or snow!), the weather that particular day, whether it’s a dry
or wet year, the time of day. Some days you get turned back before you reach
the peak. Maybe an avalanche happened overnight. Or you time it just right to
get a view of sunset/sunrise/aurora/milky way. There’s always something new to
learn even if it’s your 100th ascent. They actually change much more than
you’d think.

I always thought it would be tough or impossible to, say, get all the
13ers/14ers in Colorado, or all the 4,000ers in the northeast. Now I realize I
could spend a lifetime just getting to really know a handful of them. I find a
strange comfort in that. Maybe I’m getting older.

Also, I love to ski and snowboard. Gotta get up to ride down! But I’ve never
lost the desire to go around one more bend, or over one more peak, to see what
I can see beyond.

------
viana007
For this tasks, I like to use Google Sheets, runs in the cloud, have a good
mobile app and runs in any device.

------
1-6
It's 2019 so you came along and took her job! In 2029, an android will come
along and take your job!

------
mettamage
Wait, isn't this particular problem solved with something like Google Sheets?

Other than privacy issues of course.

~~~
kingosticks
And you might want to still use it in x years time after Google decides to
kill-off Sheets. You must be very wary when building anything on a Google
service.

~~~
jjuel
And what happens if Keikai fails long before Google gets rid of sheets? I get
that Google has a habit of killing things off, but they are often things that
are unpopular. Sheets is far from unpopular.

~~~
kingosticks
Yep, I agree it's always a risk; but if you were really concerned you could
perhaps acquire a small outfit like Keikai and protect yourself. Your money
just isn't interesting to Google so that's never an option.

And I don't believe it's true to say they've only killed unpopular things.
Anything outside of the core business (and I will argue Sheets/Docs is
outside) is up for the chop.

~~~
fauigerzigerk
_> but if you were really concerned you could perhaps acquire a small outfit
like Keikai and protect yourself_

Only one customer can do that, not all of them. As a small provider of
enterprise software I would offer to sign a source code escrow agreement.

~~~
kingosticks
Yes, that's a far better way to protect your investment. Thanks for pointing
that out.

------
donatj
We used something like this to build configurators for clients at a previous
job some 10+ years ago. I always thought they should have sold it as a service
rather than just internal tooling the clients didn’t know anything about.

------
abrkn
A simple solution to an easy problem, and you saved someone time. Good job!

------
_raoulcousins
The world's most popular database becomes the world's most popular web
framework. Makes sense.

------
tekni5
Your demos break or don't even load if page zoom level is set above or below
100% in Firefox btw.

------
dpau
I love spreadsheets. But not like this. Take a step back and really look at
it. This is horrible web UI design. Even as just a spreadsheet it could use a
lot of work. For example, it would probably function much better as a single
sheet rather than having to cycle through three screens for each conversion.

------
revskill
Excel is fine until you have to work with nested data structure/relationship.

~~~
x38iq84n
Or until a member on the team has an older version of Excel that causes
compatibility problems for the rest of the team.

Or until a spreadsheet is edited in Excel that uses language other than
English - formula functions will also take nationalised names.

Or until multiple people make changes to a spreadsheet, but there is no
version control in Excel.

~~~
simonh
Version control is a big one for financial institutions, because there's no
way to verify what the state of a spreadsheet was when a particular analysis
was done.

One place I worked at created a Python library called the DAG (Directed
Acyclic Graph) for this. It enabled an easy way to translate a chain of Excel
cell functions into Python code, which can then be version controlled, diffed,
code reviewed, etc.

------
velcrovan
Does it support charts?

------
kissgyorgy
Doing something like this for learning, innovation and fun? Sure! But
otherwise I don't understand why people are doing things like these,
especially with Excel.

~~~
hiccuphippo
Boss asks you for currencies of several countries, so you present a table with
the data. The easiest way would be to make it in Excel. Then they ask you to
keep a record of the currencies they are buying/selling. Again, the easiest
database to do that is an Excel file. You have something that works and didn't
need the help of anyone to do it.

The important point would be to recognize that when they ask you this for the
second or third time it might be time to automatize it.

------
dontbenebby
Excel is the new emacs. Both contain robust scripting abilities, can edit
text, and begin with the letter 'e'.

------
pietrovismara
Or don't please, I think it's a terrible idea to abuse spreadsheets like this.

I'm being forced by my manager to do this for a client due to a close deadline
(the idea is to implement a spreadsheet as interface to make it quicker than a
classic web app), lbut they keep asking me to implement advanced features that
would be 10 times faster to implement with a regular interface or sometimes
not even possible on a sheet. Spreadsheets have a precise use case and it's
not to replace web apps.

~~~
_pmf_
> I think it's a terrible idea to abuse spreadsheets like this.

It currently maintains millions of business software jobs.

~~~
Nextgrid
Telemarketing also maintains millions of jobs. Doesn’t mean it’s a good thing
to keep around.

~~~
_pmf_
> Doesn’t mean it’s a good thing to keep around.

Well, too bad the smart guys in Silicon Valley are busy perfecting their yak
shaving, otherwise I'm sure they would have found the holy grail of business
software that us foolish dark matter programmers have failed to deliver on for
several decades in no time.

------
collyw
Stop encouraging people to use Excel for tasks where it is a poor fit. I have
wasted so many hours of my life because of Excel and people using it for non-
spreadsheet purposes.

~~~
throwayEngineer
You may be a dying breed.

As much as everyone wants to build full stack for every application, Excel is
fantastic for complex math out of the box.

Excel is the average persons database.

I have found being able to expand on this has been incredibly useful and
modular.

And as a note, VBA is definitely a real programming language, it up to the
developer on how to treat Excel.

~~~
newaccoutnas
I must be part of the dying breed too. Having been involved in migrating very
broken Excel/Access/VBA into properly formed web applications for companies
I've worked at, the problem is people using the wrong tool in the first place.
It may meet their immediate need but with no viewpoint on it's future usage,
then fragility sets in and it costs the company more in upkeep and resource. I
can see how that happens, but perpetuating it seems a bad idea.

~~~
pacoWebConsult
Worked on a project last winter to add a fully featured compliance management
system to a state regulatory agency in Access. They have moved to a sql server
backend but the support for database operations is incredibly limited by the
Access JET DB engine. Ended up just using ADO in my VBA scripts for everything
instead of the Access database tools because it was not capable enough for the
complexity. This client doesn't have the budget to migrate from Access, but
has the budget to continue slapping garbage to it every year. At least as the
primary NGO involved works with other states to create a web-based solution,
my client might be able to move away from Access by 2025? I would say the
majority of orgs that encounter this really have no choice in perpetuating the
use of bad systems.

------
ivanhoe
It's worth noting that the described flow could've been fully automated from
within the Excel itself, with just a few macros and formulas. I've created a
spreadsheet doing very similar thing (grabbing the exchange rate from net and
generating invoice) like a decade ago, so it's not even something new. The
main issue people have with Excel is the same as with vim, majority of users
just don't use it properly and know only the most basic functionality - which
results in them doing a lot of repetitive things manually. I don't mind using
tools like keikai, they're one approach to solve the problem, but perhaps
companies could also try to send their employees on a proper Excel course
first.

~~~
gcmrtc
I've been able to learn vim because the web is full of high quality content
that will teach it from the basics in a way that's compatible with my mindset.

I never had the same experience learning Excel, maybe the problem is my
mindset. The only learning experience I enjoyed about excel is 'You suck at
Excel' by Joel Spolsky.

Can someone recommend a good Excel learning path for someone in this
situation?

~~~
CamelCaseName
The best way to learn Excel is to use it at work. I thought I was fantastic at
Excel/VBA until I got my first finance role. Learned more in 3 months than I
could have learned in 3 years on my own.

One secret I'll let you in on: most people use plugins like KuTools to do the
heavy lifting. There are tons of industry-specific plugins. When you really
can't find a plugin to do what you want, then, and only then, should you be
writing macros and saving them to your xlsb.

But what if you're not able to use it at work? Then I recommend picking up pet
projects and continually look for ways to improve. Just keep asking, "could
this be easier?"

Whenever you get stuck on Excel issues, I recommend watching Excelisfun [0]
who has thousands of hours of video content on every Excel feature you can
think of. If you have difficulties with VBA, check out MSDN help docs.

P.S. Don't write a fuzzy text matching algo yourself. You will drive yourself
crazy and Microsoft has one for free to download.

[0]
[https://m.youtube.com/user/ExcelIsFun](https://m.youtube.com/user/ExcelIsFun)

------
vianneychevalie
There is a solution developed in France, WeMaik [0]that is very similar. We've
used their solution in the consulting firm I'm a part of.

The clients are very satisfied, because the web app that's outputted by WeMaik
is so easy to design and produce that they're produced by industry-
knowledgeable consultants, and not web developers.

We go from idea to actionable mock-up in half a day, present it to the client,
and then build the real solution assisted by WeMaik. The connections, queries,
logic are not no-code, though, for this solution. We describe the specs in the
spreadsheets we send to WeMaik, and they configure it.

[0] [https://www.wemaik.com/](https://www.wemaik.com/)

~~~
avip
And glide
[https://news.ycombinator.com/item?id=19163081](https://news.ycombinator.com/item?id=19163081)

------
krm01
I’ve built [http://upstart.me](http://upstart.me) entirely on Google Sheets.
Haven’t had any issues and works really well. This allows me to collect data
from newsletter through a Google Form - which gets stored in a Sheet - that I
can then curate, copy & paste to an other sheet that is used as the DB for the
Live website.

Im also working on an internal CRM tool for
[http://fairpixels.pro](http://fairpixels.pro) with a sleek frontend that can
be used as a browser homepage (showing key business stats) all while the same
Sheet is used to manage customers.

I highly recommend looking into this because it allows for a simple to manage
backend for those that live in Sheets.

~~~
mathnmusic
We were recently considering quick prototyping using Google Forms but ran into
two key limitations:

(1) Getting a _validated_ email address of the submitter. It does support an
email field, but makes it a free-form text input with no way of enforcing
ownership of that email.

(2) Pre-populating some of the fields when we send the user to a form via a
link. Without this, the user ends up filling the fields even though they have
already submitted that information in another form.

Are there any powerful (forms + spreadsheet) products out there that solve
these (and are cheaper than, say, AirTable) ?

(2)

~~~
davidpolberger
Calcapp may be what you're looking for. You can validate text fields using
regular expressions and there's an example of how to validate an e-mail
address here: [https://www.calcapp.net/learn/beyond-
numbers.html#validating...](https://www.calcapp.net/learn/beyond-
numbers.html#validating-text-fields). Fields can be pre-populated with either
values you know ahead-of-time or through Excel-like formulas.

(I'm a co-founder of Calcapp.)

~~~
mgkimsal
> enforcing ownership of that email.

I believe the GP was talking more about "click here to confirm your account"
type validation, not "does it have an @ in it".

------
majkinetor
No.

------
mastrsushi
>Offers to do her job free of charge

>Consistently refers to her as "Admin Lady"

Dude what the actual fuck

------
delusional
Excel is a dead-end road. I view all software as a vehicle to achieve more
software. In other words, the solutions of today become the platforms of
tomorrow. To that end, anything made in Excel is completely worthless. You can
get some way by using excel, but at some point you want to build something on
top of it, and at that point you will have to throw your entire excel solution
out the window.

Excel sheets are nothing buy a worse version of bash scripts, at least in my
opinion. At least bash scripts let you plug them into something bigger using
standard process operations.

~~~
GavinMcG
I suspect you've never worked in a non-software business environment. Your
statements live up to your username. I'm sure you're an intelligent and
skilled person, but you're speaking outside your wheelhouse right now.

~~~
bishala
LOL at that second sentence :)

