init
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
using DocumentFormat.OpenXml.Packaging;
|
||||
using Ap = DocumentFormat.OpenXml.ExtendedProperties;
|
||||
using Vt = DocumentFormat.OpenXml.VariantTypes;
|
||||
using DocumentFormat.OpenXml;
|
||||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using Xdr = DocumentFormat.OpenXml.Drawing.Spreadsheet;
|
||||
using A = DocumentFormat.OpenXml.Drawing;
|
||||
using C = DocumentFormat.OpenXml.Drawing.Charts;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
namespace ExcelExport
|
||||
{
|
||||
public class ExportBase
|
||||
{
|
||||
private System.Collections.Generic.Dictionary<string, string> _cellLookup = new System.Collections.Generic.Dictionary<string, string>();
|
||||
protected string GetCell(string key)
|
||||
{
|
||||
if (_cellLookup.ContainsKey(key)) { return _cellLookup[key]; }
|
||||
System.Diagnostics.Trace.WriteLine("missing key " + key);
|
||||
throw new System.NotImplementedException(key);
|
||||
}
|
||||
protected void AddCollectionReference(string key, string reference)
|
||||
{
|
||||
if (!_cellLookup.ContainsKey(key)) { _cellLookup.Add(key, reference); }
|
||||
}
|
||||
|
||||
protected CalculationChain _calculationChain1 = new CalculationChain();
|
||||
protected void InsertCalculation(string cellReference, int sheetid, bool newLevel)
|
||||
{
|
||||
_calculationChain1.Append(new CalculationCell()
|
||||
{
|
||||
CellReference = cellReference,
|
||||
SheetId = sheetid,
|
||||
NewLevel = newLevel
|
||||
});
|
||||
}
|
||||
|
||||
private System.Collections.Generic.Dictionary<string, int> _items = new System.Collections.Generic.Dictionary<string, int>();
|
||||
protected SharedStringTablePart _sharedStringTablePart;
|
||||
protected int InsertSharedStringItem(string text)
|
||||
{
|
||||
if (string.IsNullOrEmpty(text)) { text = ""; }
|
||||
if (_items.ContainsKey(text)) { return _items[text]; }
|
||||
// The text does not exist in the part. Create the SharedStringItem and return its index.
|
||||
_sharedStringTablePart.SharedStringTable.AppendChild(new SharedStringItem(new DocumentFormat.OpenXml.Spreadsheet.Text(text)));
|
||||
_sharedStringTablePart.SharedStringTable.Save();
|
||||
_items.Add(text, _items.Keys.Count);
|
||||
return (_items.Keys.Count - 1);
|
||||
}
|
||||
|
||||
protected Cell CreateTextCell(string reference, string value)
|
||||
{
|
||||
Cell c = new Cell() { CellReference = reference, DataType = CellValues.SharedString };
|
||||
CellValue cv = new CellValue() { Text = InsertSharedStringItem(value).ToString() };
|
||||
c.Append(cv);
|
||||
return c;
|
||||
}
|
||||
protected Cell CreateNumericCell(string column, double[] data, int index)
|
||||
{
|
||||
Cell c = new Cell() { CellReference = string.Format("{0}{1}", column, 2 + index) };
|
||||
if (index < data.Length)
|
||||
{
|
||||
CellValue cv = new CellValue() { Text = data[index].ToString() };
|
||||
c.Append(cv);
|
||||
}
|
||||
return c;
|
||||
}
|
||||
protected Cell CreateNumericCell(string reference, uint style, double value)
|
||||
{
|
||||
Cell c = new Cell() { CellReference = reference, StyleIndex = (UInt32Value)style };
|
||||
c.Append(new CellValue() { Text = value.ToString() });
|
||||
return c;
|
||||
}
|
||||
protected Cell CreateStylizedTextCell(string reference, UInt32Value style, string text)
|
||||
{
|
||||
Cell c = new Cell() { CellReference = reference, StyleIndex = style, DataType = CellValues.SharedString };
|
||||
CellValue cv = new CellValue() { Text = InsertSharedStringItem(text).ToString() };
|
||||
c.Append(cv);
|
||||
|
||||
return c;
|
||||
}
|
||||
protected Cell CreateStylizedTextCell(string reference, UInt32Value style, string text, string key)
|
||||
{
|
||||
if (string.IsNullOrEmpty(text)) { text = ""; }
|
||||
Cell c = new Cell() { CellReference = reference, StyleIndex = style, DataType = CellValues.String };
|
||||
CellValue cv = new CellValue() { Text = text };
|
||||
InsertCalculation(reference, 2, true);
|
||||
c.Append(new CellFormula() { Text = string.Format("\'Top page\'!{0}", GetCell(key)) });
|
||||
c.Append(cv);
|
||||
|
||||
return c;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user