Big changes
This commit is contained in:
118
Source/TSRealLib/MAL/SupportProjects/ExcelZip/Cell.cs
Normal file
118
Source/TSRealLib/MAL/SupportProjects/ExcelZip/Cell.cs
Normal file
@@ -0,0 +1,118 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace ExcelZipLib
|
||||
{
|
||||
public class Cell
|
||||
{
|
||||
/// <summary>
|
||||
/// Used for converting from Excel column/row to column index starting at 0
|
||||
/// </summary>
|
||||
[XmlAttribute("r")]
|
||||
public string CellReference
|
||||
{
|
||||
get
|
||||
{
|
||||
return ColumnIndex.ToString();
|
||||
}
|
||||
set
|
||||
{
|
||||
ColumnIndex = GetColumnIndex(value);
|
||||
if (ColumnIndex > worksheet.MaxColumnIndex)
|
||||
worksheet.MaxColumnIndex = ColumnIndex;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The t type
|
||||
/// </summary>
|
||||
[XmlAttribute("t")]
|
||||
public string tType = "";
|
||||
|
||||
/// <summary>
|
||||
/// Original value of the Excel cell
|
||||
/// </summary>
|
||||
[XmlElement("v")]
|
||||
public string Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return _value;
|
||||
}
|
||||
set
|
||||
{
|
||||
_value = value;
|
||||
if (tType.Equals("s"))
|
||||
{
|
||||
Text = Workbook.SharedStrings.si[Convert.ToInt32(_value)].t;
|
||||
return;
|
||||
}
|
||||
if (tType.Equals("str"))
|
||||
{
|
||||
Text = _value;
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
Amount = Convert.ToDouble(_value, CultureInfo.InvariantCulture);
|
||||
Text = Amount.ToString("#,##0.##");
|
||||
IsAmount = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Amount = 0;
|
||||
Text = String.Format("Cell Value '{0}': {1}", _value, ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Index of the orignal Excel cell column starting at 0
|
||||
/// </summary>
|
||||
[XmlIgnore]
|
||||
public int ColumnIndex;
|
||||
|
||||
/// <summary>
|
||||
/// Text of the Excel cell (if it was a string)
|
||||
/// </summary>
|
||||
[XmlIgnore]
|
||||
public string Text = "";
|
||||
|
||||
/// <summary>
|
||||
/// Amount of the Excel cell (if it was a number)
|
||||
/// </summary>
|
||||
[XmlIgnore]
|
||||
public double Amount;
|
||||
|
||||
/// <summary>
|
||||
/// The is amount
|
||||
/// </summary>
|
||||
[XmlIgnore]
|
||||
public bool IsAmount;
|
||||
|
||||
/// <summary>
|
||||
/// The _value.
|
||||
/// </summary>
|
||||
private string _value = "";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the index of the column.
|
||||
/// </summary>
|
||||
/// <param name="CellReference">The cell reference.</param>
|
||||
/// <returns></returns>
|
||||
private int GetColumnIndex(string CellReference)
|
||||
{
|
||||
string colLetter = new Regex("[A-Za-z]+").Match(CellReference).Value.ToUpper();
|
||||
int colIndex = 0;
|
||||
|
||||
for (int i = 0; i < colLetter.Length; i++)
|
||||
{
|
||||
colIndex *= 26;
|
||||
colIndex += (colLetter[i] - 'A' + 1);
|
||||
}
|
||||
return colIndex - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user