
How to Update EPPlus
====================

We use the EPPlus library to read MS Office Open XML (OOXML) files. 
This includes both MS Excel files and Google Sheets exported in MS Office Open XML format.
We do this both when the user "adds" a new Excel or Google worksheet through the Editor, and when the user "regenerates" a table in the Editor.
Using EPPlus allows us to use the same complex "type inference" code for both Excel and Google Sheets.
When a Google Sheet is being used, we ask Google Sheets to export the workbook and all of its worksheets as an Excel document.

We obtained the EPPlus library from http://epplus.codeplex.com/ .

The source code for EPPlus is checked in to Git. 
It is located in folder GitHub\EPPlus.
 
The branches are described here https://github.com/afader/EPPlus

The following branches are present:
1.	Official – The EPPlus source code we are currently using as the base source code.
2.	AppSheet – The Official version with our changes applied.
3.	MergeEPPlus20160719 – The EPPlus source code from 07/19/2016 with our changes applied.

To change EPPlus, do the following:

1.	CD to folder GitHub\EPPlus.
2.	Use Git to checkout branch AppSheet.
3.	Change the appropriate source code files.
4.	Checkin the changes to Git. Use the git push command: "git push origin HEAD:refs/for/main"
5.	Build the EPPlus solution using Visual Studio 2017.
6.	Copy the EPPlus.dll file produced by the build from folder Documents\GitHub\EPPlus\EPPlus\bin\Debug to folder Documents\GitHub\Jeenee\lib.
7.	CD to folder Documents\GitHub\Jeenee.
8.	"git add" the EPPlus.dll file.
9.	"git Commit" and "git push" the changes to EPPlus.dll.
