私は、Excelは、テーブルtblPhoneCode
で2列Country
とCode
でファイルを持っている、と私は、リストデータ検証がCountry
列を指していると、セルB1を持っているEPPlusが#VALUEを返す!代わりに、セルの内容のOFFSET式で使用する場合、間接&MATCH
とセルB2基本的には、選択されたCountry
ためCode
を表示します。
セルB2は、次の式を使用してExcelで
OFFSET(INDIRECT("tblPhoneCode[#Headers]"),MATCH(B1,INDIRECT("tblPhoneCode[Country]"),0),1,1,1)
すべてはそれが必要として動作しますが、私はC#でEPPlusを使用してB2の値を読んでいたときに、問題は、私は#VALUE!
を取得していますです実際の電話Code
の代わりに私はワークブック、ワークシートからセルに.Calculate()
を試してみましたが、値にアクセスしようとしましたが同じです。私はロガーを添付して空になり、エラーが記録されません。
C#コード
static void Main(string[] args)
{
var excelFile = new FileInfo(@"C:\Users\Ash\Desktop\Epplus.xlsx");
using (var package = new ExcelPackage(excelFile))
{
// Output from the logger will be written to the following file
var logfile = new FileInfo(@"C:\Users\Ash\Desktop\EpplusLogFile.txt");
// Attach the logger before the calculation is performed.
package.Workbook.FormulaParserManager.AttachLogger(logfile);
// Calculate - can also be executed on sheet- or range level.
package.Workbook.Calculate();
Debug.Print(String.Format("Country: \t{0}", package.Workbook.Worksheets[1].Cells["B1"].Value));
Debug.Print(String.Format("Phone Code:\t{0}", package.Workbook.Worksheets[1].Cells["B2"].Value));
// The following method removes any logger attached to the workbook.
package.Workbook.FormulaParserManager.DetachLogger();
}
}
出力:
Country: US
Phone Code: #VALUE!
すべてのヘルプや洞察力がはるかに高く評価され、私はEPPlus 4.1.0、MSエクセル2010、.NET 4.0を使用して、およびWindows 10の64ビットいます
try package.Workbook.Worksheets [1] .Cells ["B2"]。Value.ToString(); –
'.ToString()'と同じ結果を試しました。出力を参照してください。私は '.Text'を試してみました – Ash
なぜ、C#で値を読み込むのではなく、単に国(国名)のキーを読み、辞書から値を取得するのではなく、辞書を使用しないでください –