I know it's not really an answer to you, but let me tell you what I have done when creating Excel-files using #OpenXml SDK.
First,
I have not generated the Excel file in code - I have generated an Excel file in Excel and used that as a template that I update with my code.
Second,
You do know that you do not need to use the Shared strings table, right? You can generate markup that persists strings in the cells themselves and do not refer to SharedStrings at all. This makes it a lot easier to handle Excel-files and since the SharedStrings-table is designed for optimization in really huuuuuuge spreadsheets, chances are that you might not need it at all?
I cannot remember the markup off-hand. but I'd be happy to look it up for you if you are interested.
Let me know :-)