EPPLUS 4.0.3を使用して、XLSXファイルをテンプレートとして開こうとしています(空のXLSXファイルも使用しました)。
テンプレートファイル(空白または実際のファイル)を開かずに、新しいブックを作成してシートを作成するだけで、問題なく動作します。 ORテンプレートファイルを開いて新しいワークシートを作成すると、正常に機能します。これは、[〜#〜] first [〜# 〜]エラーが発生したテンプレートのシート:ワークシートの位置が範囲外です。
次のように最初のワークシートにアクセスします:workBook.Worksheets.First()
は機能しません。
最初はもはや定義ではありません。
そこで、名前とこの方法で最初のワークシートにアクセスしてみましたworkBook.Worksheets[1]
0と1の両方を使用して、最初のシートを取得しようとします。
私のコード:
var existingTemplate = new FileInfo(_ExcelTemplateFilePath);
using (ExcelPackage p = new ExcelPackage(existingTemplate)) {
// Get the work book in the file
ExcelWorkbook workBook = p.Workbook;
ExcelWorksheet ws = workBook.Worksheets[1];
// MY OTHER Excel CELL CODE HERE
}}
Excelファイルの最初のシートにアクセスする方法を知っている人はいますか?
ワークシートをインデックスではなく名前で参照することで、この問題を回避することができました。
var oSheet = package.Workbook.Worksheets["My Worksheet Name"];
最初のシートを取得するには、以下のコードを使用してください
var xlWorkbook = new ExcelPackage(new FileInfo(@"C:\ESD\EXCELDATAREADTEST.xlsx"));
ExcelWorksheet workSheet = xlWorkbook.Workbook.Worksheets[1];
ブックの正しい場所を指していることを確認してください
私はこれと同じ問題を抱えていましたが、問題は、EPPlusが名前付き範囲のスプレッドシートでチョークすることです。
スプレッドシートを読めるようにするために(LibreOffice Calcを使用して)行ったことは次のとおりです。
これらの手順を完了したら、スプレッドシートを保存/閉じて、EPPlusで開くことができました。
使った
var currentSheet = package.Workbook.Worksheets;
var workSheet = currentSheet.First();
これは、シートに既知の名前がない可能性があり、最初のシートに関心があるためです。