Open-source Libraries for Working with Open XML Documents (docx, xlsx, pptx)
github.com
github.com
A link from the github page might be helpful!
XLSX/XLSM/XLSB reader/writer: https://github.com/SheetJS/js-xlsx
XLS(BIFF8)/XML(2003-4) reader: https://github.com/SheetJS/js-xls
In-browser reader demo: http://oss.sheetjs.com/
In-browser writer demo: http://tokuhirom.github.io/js-xlsx-demo/
--
Some other alternatives:
Python xlrd https://github.com/python-excel/xlrd , xlwt https://github.com/python-excel/xlwt , XlsxWriter https://github.com/jmcnamara/XlsxWriter
Java POI https://poi.apache.org/
Further instructions:
http://sebsauvage.net/wiki/doku.php?id=word_document_generat...
Their choices are AllSigned (or RemoteSigned which is the same thing in this context) or Unrestricted.
If they chose the AllSigned route and then sign it with a CA certificate (e.g. Microsoft's Code Signing cert) that would work, but if the user ever made even a one character change to the script the thing will break and it might be unclear as to WHY. Plus you have to be careful not to lose your signature when sending files via certain technologies.
Alternatively they could teach the user how to set up a local CA, make a key pair set, and then install. But that too is going to break a lot as it needs to be re-signed each time the script is updated, and obviously inter-machine coding will be a PITA.
It is fairly standard practice on non-server developer machines to set it to Unrestricted. It isn't really any more dangerous than for example BAT or VBS scripts which have no such default restrictions.
You call it lazy, but the alternatives seem impractical and painful. There are scenarios where you want to enforce code signing, I just don't really feel like a developer machine is one of them.
This is like a Linux distribution shipped OpenSSH disabled by default, and if you enabled it, you'd have to sign every script you run or allow everyone to run (almost) as root.
I'm not a fan of PS (coming from Python, PS syntax is just nuts), but it's the most useful tool in the Windows world to automate tasks and deployments of all sorts... or rather it would be, if the security model weren't so inane that few people dare touching it.
In the past "bad guys" have used VBS to leverage a minor exploit into a full compromise. For example, they might have the ability to write arbitrary strings to the filesystem but not execute or run code. So they write out a *.VBS into the StartUp folder, and when the user reboots they have gone from a relatively minor entry into full remote control.
While VBS and BAT remain on Windows based PCs, having PS be locked down is a little irrational. However I suspect Microsoft might be looking to the future when one day they can remove both BAT and VBS (or force the user to enable/install them manually) so that it becomes harder to use such things to escalate your compromise.
Essentially they're trying to limit attack surface on 90%+ of consume grade machines, as your average consumer will never run a PS script or even care that they cannot. A lot of medium to large enterprises have an internal CA (with the CA cert already on the machines for authenticating with AD) so internally signing their network scripts is of lower cost (i.e. the infrastructure is all in place, just a single command to sign which you can automate with PS, unlike a solo developer who might not be aware of certificate issues anyway and certainly won't be running their own CA).
Your post assumes that PS hasn't been hugely successful, which is definitely not my experience. SysAdmins in the Windows worlds are all over PowerShell, they love it, and if you go read something like SpiceWorks or any other similar community 90% of the new automations are written in PS rather than VBS/BAT (it helps that all of the MS tools in Server 2012 natively support PS). I don't really think the default security restrictions are going to limit PS's popularity, they might limit it for certain niche deployments (e.g. MAKE scripts distributed over the internet) but not for internal use.
As far as you not liking PS, I understand, I really do. Most other scripting languages use strings as their fundamental unit of work (e.g. pass strings from process A to B, even over pipes it is all strings or file names which are also strings). In PS the System.Object is the base unit, and everything above that is also an object (it is classic OOP), so it really takes some getting used to. There's a lot of inheritance in there.
But once you understand the underlying concepts involve, it is quite de-mystified. However it really helps if you've come from a Java/.Net programming background since even things like overloading isn't really something you'd run across in a scripting language based largely on string transportation.
If you want to get started watch this workshop (you don't need to watch the full 4 hours(!)): https://www.youtube.com/watch?v=-Ya1dQ1Igkc
> A lot of medium to large enterprises have an internal CA (with the CA cert already on the machines for authenticating with AD)
That's not my experience, but I guess we're both going by anecdotes here. (to be precise, in the few cases where an internal CA is actually present, the process to have anything signed is usually a bureaucratic nightmare)
My particular point of view is a vendor who comes in to deploy stuff on customer servers and is told that Powershell should remain disabled (or be enabled for installation purposes and then disabled again, which removes the possibility of automated maintenance via PS). I guess it's a political choice as much as a technical one, but that's what I've experienced; and the larger the company, the most likely that this policy is not negotiable.
I don't disagree that PS has been successful; the Windows world was screaming for a half-decent shell and PS is exactly that. I just think that it could have been much more successful had MS chosen their defaults a bit more carefully (and/or implemented a better security model).
On the syntax, what I don't like is not being object-based -- I don't particularly like the "string everywhere" approach -- but rather the over-reliance on special characters (that tends to make a PS script fairly unreadable compared to Python). It also feels more of a bash-style world than a scripting-language world, which I think is a step back from VBS/JS.
PowerShell -ExecutionPolicy Bypass -File (...)
http://stackoverflow.com/questions/728143/ignore-security-wa...As it seems, this project does NOT implement the ISO standard, instead it works with the non-standard compliant versions that Microsoft Office produces. Le Sigh.
Supposedly it's the fastest, even beating out xlsxwriter.
But what do you expect? Multi-language interop for libraries is hard, though. Frankly the fact that it's natively accessible from every CLR language is pretty impressive - most Python libraries can't really be used from anything but Python, for example. Generally the approach with an open source library like this would be for someone to take on porting it to, e.g., Java.
http://www.theguardian.com/world/2013/jul/11/microsoft-nsa-c...
http://techcrunch.com/2014/05/13/nsa-docs-detail-efforts-to-...
Not to mention that pushing Metro to my desktop didn't exactly win them brownie points with me, nor did being essentially the biggest patent troll around by asserting 300 patents against an open source project, and then helping Oracle in the ruling that decided API's are copyrightable.
"Note: for this first release, you must have some version of Visual Studio installed."
Until that changes, it's just another product in the Microsoft ecosystem.
So, saying you can have it as great as you want as long as your are willing to commit to it isn't really informative.
Also I might be tainted by the years and years of Microsoft screwing with Office, but I'd wait until there is at least one or two serious players validate this project as fully working at scale until I'd give them the full credits.
Open sourcing stuff doesn't make it magically entirely pain free nor does it make a quality product. This isn't a quality product and neither is the thing that generates the documents you will need to parse (and clean all the incongruous crap) from.
However I expect our Surface 2095 will run Office 2097 and it'll still have VBA jammed in due to some legacy clients moaning that they can't run their financial app in it any more :)
Current day MS is still strongly dominated by the lock-in mentality. So this change is welcome, but they have a really long way to go to repair all the damage they caused and gain some trust.