作成日: 2020/01/08 最終更新日: 2020/05/20
文書種別
不具合
状況
修正済み
詳細
複数のセル範囲を指定し、そのIRange.HasFormulaプロパティの値を参照した際、左上端以外のセルに対する検証が行われません。そのため、左上端のセルに数式が含まれていない場合、その他のセルに数式が含まれている場合でもFalseが返ります。
回避方法
この問題はバージョン3.1.2で修正されました。
※修正版を適用しない場合の回避方法は以下の通りです。
下記のようにループ処理にて範囲内の各セルに対してHasFormulaプロパティを適用してください。
-----------------------------------------
static void Main(string[] args)
{
Workbook wb = new Workbook();
IWorksheet ws = wb.Worksheets[0];
ws.Range["B1"].Value = "test";
ws.Range["A2"].Formula = "=Sheet1!$B$1";
System.Diagnostics.Debug.WriteLine(HasFormula(ws.Range["A1:A3"]));
static bool HasFormula(IRange range)
{
for (int rowIndex = 0; rowIndex < range.RowCount; rowIndex++)
{
for (int colIndex = 0; colIndex < range.ColumnCount; colIndex++)
{
if (range[rowIndex, colIndex].HasFormula)
return true;
}
}
return false;
}
}
※修正版を適用しない場合の回避方法は以下の通りです。
下記のようにループ処理にて範囲内の各セルに対してHasFormulaプロパティを適用してください。
-----------------------------------------
static void Main(string[] args)
{
Workbook wb = new Workbook();
IWorksheet ws = wb.Worksheets[0];
ws.Range["B1"].Value = "test";
ws.Range["A2"].Formula = "=Sheet1!$B$1";
System.Diagnostics.Debug.WriteLine(HasFormula(ws.Range["A1:A3"]));
static bool HasFormula(IRange range)
{
for (int rowIndex = 0; rowIndex < range.RowCount; rowIndex++)
{
for (int colIndex = 0; colIndex < range.ColumnCount; colIndex++)
{
if (range[rowIndex, colIndex].HasFormula)
return true;
}
}
return false;
}
}
旧文書番号
84824