无法将更改保存到 Excel 文件 (C# /)

Unable to Save Changes to Excel File (C# /)

我一直在尝试修改名为 "Hoja de Resultados" 的 Excel 文件,每次在 [=17= 中添加三个不同的变量(Puntuacion = Score,Fecha = Date,Hora = Time) ] (C#)。 excel sheet 链接到 DataGridView window,它会在每次更改值时更新。问题是,当 excel sheet 上的行少于 3 行时,程序会停止修改 XLSX,有时它会在 "Program.cs".

上抛出看似随机的异常
string Direccion = "G:\Archivos\Programación\Visual Basic\UVG\Microcontroladores - Proyecto Final Comunicación Serial\Hoja de Resultados.xlsx";
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook Hoja = ExcelApp.Workbooks.Open(Direccion);
Microsoft.Office.Interop.Excel.Worksheet HojaActiva = ExcelApp.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;

Excel.Range Rango = HojaActiva.UsedRange;
int Posicion = Rango.Rows.Count;
int NuevaPosicion = Posicion + 1;
HojaActiva.Cells[NuevaPosicion, 1] = Puntuacion;
HojaActiva.Cells[NuevaPosicion, 2] = Fecha;
HojaActiva.Cells[NuevaPosicion, 3] = Hora;

Hoja.Saved = true;
ExcelApp.DisplayAlerts = false;
ExcelApp.ScreenUpdating = false;
ExcelApp.Visible = false;
ExcelApp.UserControl = false;
ExcelApp.Interactive = false;

Hoja.Close(true, Type.Missing, Type.Missing);
Marshal.ReleaseComObject(Hoja);
Marshal.ReleaseComObject(HojaActiva);
ExcelApp.Quit();

Sorry if it's partially in Spanish. But for some guidance:

  • Hoja = Workbook
  • HojaActiva = ActiveWorkbook

您的 Excel 文件没有更新的原因是您没有将它保存在代码中的任何地方。为了解决您的储蓄问题,

更改此行:

Hoja.Saved = true;

Hoja.Save();

当你写 Hoja.Saved = true; 时,它告诉 Excel 没有要保存的更改,无论是否是这样,它可以安全退出。因此它实际上并没有保存任何东西。您必须显式调用 Save() 方法。

您的代码中的另一个可能问题是活动范围没有从最顶部开始。 int NuevaPosicion = Posicion + 1; 行假设您的输入从第 one 行开始,但事实可能并非如此。我建议将该行更改为:

//This way it doesn't matter where the range starts.
// Rows.Row returns the row on which the active range begins.
int NuevaPosicion = Posicion + Rango.Rows.Row;

现在新数据将始终附加到 sheet 的末尾。

除了以上两点,我无法在 excel sheet 上复制 少于 3 行的问题,你发布的代码似乎运行 在我能想到的所有条件下都没有问题。尝试进行上述更改,看看是否能解决您的其他问题。如果不是,请更新您的问题以更明确地描述 "Program.cs" 上看似随机的异常。