当工作表不存在时,我正在尝试使用以下代码处理异常:
int k = blYear.SelectedIndex;
ExcelWorksheet currentWorkSheet;
try
{
currentWorkSheet = workbook.Worksheets[k + 1];
}
catch (Exception)
{
MessageBox.Show("La hoja de trabajo no existe en el archivo de Excel", "Error",MessageBoxButtons.OK, MessageBoxIcon.Error);
btnCargarExcel.Enabled = true;
blYear.Enabled = true;
filePath.Text = "";
}
但我收到了这个错误:
如果我尝试编译出现此错误
错误 1 使用未分配的局部变量 'currentWorkSheet' d:\Work\ClanMovil\CMApp\WindowsFormsApplication1\WindowsFormsApplication1\ExcelDBUserControl.cs 71 46 CMApp
如果我忽略错误并继续构建,那么我会得到另一个
--------------------------------------- Microsoft Visual Studio -------------------- ------- 源文件:D:\Work\ClanMovil\CMApp\WindowsFormsApplication1\WindowsFormsApplication1\ExcelDBUserControl.cs
模块:d:\Work\ClanMovil\CMApp\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\CMApp.exe
进程:[4944] CMApp.vshost.exe
源文件与构建模块时不同。您是否希望调试器仍然使用它?是 否
System.Collections.Generic.KeyNotFoundException 未处理
HResult=-2146232969 Message=给定的键不在字典中。Source=mscorlib StackTrace:在 System.Collections.Generic.Dictionary`2.get_Item(TKey key) at OfficeOpenXml.ExcelWorksheets.get_Item(Int32 PositionID) at WindowsFormsApplication1.ExcelDBUserControl.btnCargarExcel_Click(Object sender, EventArgs e) in d:\Work\ ClanMovil\CMApp\WindowsFormsApplication1\WindowsFormsApplication1\ExcelDBUserControl.cs:第 66 行在 System.Windows.Forms.Control.OnClick(EventArgs e) 在 System.Windows.Forms.Button.OnClick(EventArgs e) 在 System.Windows.Forms.Button .OnMouseUp(MouseEventArgs 事件) 在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 在 System.Windows.Forms.Control.WndProc(Message& m) 在 System.
处理这个的正确方法是什么?
编辑第一个错误 好的,看到关于未声明的 var 的错误我对我的代码进行了一些修改,现在是这样的:
using (var package = new ExcelPackage(existingFile))
{
ExcelWorkbook workbook = package.Workbook;
ExcelWorksheet currentWorkSheet = workbook.Worksheets.First();
if (workbook != null)
{
if (workbook.Worksheets.Count > 0)
{
int k = blYear.SelectedIndex;
try
{
currentWorkSheet = workbook.Worksheets[k + 1];
}
catch (Exception)
{
MessageBox.Show("La hoja de trabajo no existe en el archivo de Excel", "Error",MessageBoxButtons.OK, MessageBoxIcon.Error);
btnCargarExcel.Enabled = true;
blYear.Enabled = true;
filePath.Text = "";
}
}
}
}
但这有一个问题,即使启动了异常,也因此加载了第一个工作表ExcelWorksheet currentWorkSheet = workbook.Worksheets.First();
,这不是我想要实现的。如果我将 var 定义为ExcelWorksheet currentWorkSheet;
并在第一个条件内设置值,则会出现相同的错误:
错误 1 使用未分配的局部变量 'currentWorkSheet' d:\Work\ClanMovil\CMApp\WindowsFormsApplication1\WindowsFormsApplication1\ExcelDBUserControl.cs 71 46 CMApp
出现所以我不知道如何处理这个,我被困在这里