title: Read value from Excel file using EPPus cause "Row out of range" error
body: <p>I'm working with <strong>EPPlus Library</strong> and wrote this code (just for test)</p>
  
  <pre><code>    private void btnCargarExcel_Click(object sender, EventArgs e)
      {
          if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
          {
              if (System.IO.File.Exists(openFileDialog1.FileName))
              {
                  Stopwatch stopWatch = new Stopwatch();
                  stopWatch.Start();
                  Thread.Sleep(10000);
  
                  filePath.Text = openFileDialog1.FileName.ToString();
  
                  var existingFile = new FileInfo(openFileDialog1.FileName.ToString());
  
                  using (var package = new ExcelPackage(existingFile))
                  {
                      ExcelWorkbook workbook = package.Workbook;
                      if (workbook != null)
                      {
                          if (workbook.Worksheets.Count &gt; 0)
                          {
                              ExcelWorksheet currentWorkSheet = workbook.Worksheets.First();
                              textBox3.Text = currentWorkSheet.Cells[0, 1].Value.ToString();
                          }                            
                      }
                  }
  
                  stopWatch.Stop();
  
                  TimeSpan ts = stopWatch.Elapsed;
                  executiontime.Text =
                      String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds,
                                    ts.Milliseconds / 10).ToString();
              }
              else
              {
                  MessageBox.Show("No se pudo abrir el fichero!");
                  System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel);
                  appExcel = null;
                  System.Windows.Forms.Application.Exit();
              }
          }
      }
  </code></pre>
  
  <p>to test if my code is working fine I add this line <code>textBox3.Text = currentWorkSheet.Cells[0, 1].Value.ToString();</code> (I get the idea from <a href="http://mkarthikeyyan.blogspot.com/2012/01/reading-excel-using-epplus.html" rel="noreferrer">here</a>) but when I execute the app I get this error: </p>
  
  <blockquote>
    <p>Row out of range</p>
  </blockquote>
  
  <p>Why is that? What I miss or I'm doing wrong? This is the stacktrace for the error:</p>
  
  <pre><code>System.ArgumentException was unhandled   HResult=-2147024809   Message=Row out of range   Source=EPPlus   StackTrace:
         at OfficeOpenXml.ExcelRange.ValidateRowCol(Int32 Row, Int32 Col)
         at OfficeOpenXml.ExcelRange.get_Item(Int32 Row, Int32 Col)
         at WindowsFormsApplication1.ExcelDBUserControl.btnCargarExcel_Click(Object sender, EventArgs e) in d:\Private\Dropbox\Work\ClanMovil21Comunicaciones\Apps\WindowsFormsApplication1\WindowsFormsApplication1\ExcelDBUserControl.cs:line 74
         at System.Windows.Forms.Control.OnClick(EventArgs e)
         at System.Windows.Forms.Button.OnClick(EventArgs e)
         at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
         at System.Windows.Forms.Control.WmMouseUp(Message&amp; m, MouseButtons button, Int32 clicks)
         at System.Windows.Forms.Control.WndProc(Message&amp; m)
         at System.Windows.Forms.ButtonBase.WndProc(Message&amp; m)
         at System.Windows.Forms.Button.WndProc(Message&amp; m)
         at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp; m)
         at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp; m)
         at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
         at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp; msg)
         at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
         at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
         at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
         at System.Windows.Forms.Application.Run(Form mainForm)
         at WindowsFormsApplication1.Program.Main() in d:\Private\Dropbox\Work\ClanMovil21Comunicaciones\Apps\WindowsFormsApplication1\WindowsFormsApplication1\Program.cs:line 20
         at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
         at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
         at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
         at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
         at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
         at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
         at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
         at System.Threading.ThreadHelper.ThreadStart()   InnerException:
  </code></pre>
  
  <p>Also and aditionally (don't know if it's better to open a new question just for this) and related to this same topic, how I can get the name (text) of each worksheet and then build option button as many worksheets are in my workbook?</p>