Open()
{
Debug.Assert(m_oDynamicFilterSettingsTable == null);
AssertValid();
// Get the table that contains the dynamic filter settings.
if (!ExcelTableUtil.TryGetTable(m_oWorkbook,
WorksheetNames.Miscellaneous, TableNames.DynamicFilterSettings,
out m_oDynamicFilterSettingsTable) )
{
OnWorkbookFormatError( String.Format(
"A table that is required to use this feature is missing."
+ "\r\n\r\n{0}"
,
ErrorUtil.GetTemplateMessage()
) );
}
foreach (ExcelTableReader.ExcelTableRow oRow in
( new ExcelTableReader(m_oDynamicFilterSettingsTable) ).GetRows() )
{
String sTableName, sColumnName;
Double dSelectedMinimum, dSelectedMaximum;
if (
oRow.TryGetNonEmptyStringFromCell(
DynamicFilterSettingsTableColumnNames.TableName,
out sTableName)
&&
oRow.TryGetNonEmptyStringFromCell(
DynamicFilterSettingsTableColumnNames.ColumnName,
out sColumnName)
&&
oRow.TryGetDoubleFromCell(
DynamicFilterSettingsTableColumnNames.SelectedMinimum,
out dSelectedMinimum)
&&
oRow.TryGetDoubleFromCell(
DynamicFilterSettingsTableColumnNames.SelectedMaximum,
out dSelectedMaximum)
)
{
// Create a SettingsForOneFilter object for each filter and
// store it in a dictionary.
SettingsForOneFilter oSettingsForOneFilter =
new SettingsForOneFilter();
oSettingsForOneFilter.SelectedMinimum =
(Decimal)dSelectedMinimum;
oSettingsForOneFilter.SelectedMaximum =
(Decimal)dSelectedMaximum;
oSettingsForOneFilter.SelectedMinimumAddress =
ExcelUtil.GetRangeAddressAbsolute(
oRow.GetRangeForCell(
DynamicFilterSettingsTableColumnNames.SelectedMinimum)
);
oSettingsForOneFilter.SelectedMaximumAddress =
ExcelUtil.GetRangeAddressAbsolute(
oRow.GetRangeForCell(
DynamicFilterSettingsTableColumnNames.SelectedMaximum)
);
m_oDynamicFilterSettingsDictionary.Add(
GetDictionaryKey(sTableName, sColumnName),
oSettingsForOneFilter);
}
}
}