我不知道为什么我一直收到错误:
'此表包含超出定义的单元格范围的单元格 在此电子表格中
我试图将从传感器连续接收的数据写入Excel文档。我尝试过使用" INSERT INTO"和"更新"这些陈述似乎都不起作用。我希望有人可以解决可能出现的问题并提供可能解决方案的提示。
我终于设法通过调整代码来部分修复问题,但现在问题是发生了同样的错误,但是在程序将数据写入excel文件的第一行和第二行之后,当它关于写在第三行,它输出错误;请注意,对于扩展名为.xls的excel文件,会出现此问题。
但是当我尝试使用.xlsx文件时,程序似乎只能在第一行写入,然后在尝试写入第二行时输出相同的错误。对我可能做错的任何建议?
感谢。
以下是代码:
private void ProcessRxdSerialData(string rxdSerialData, int rxdSerialVal)
{
try
{
if (!string.IsNullOrEmpty(rxdSerialData))
{
Console.WriteLine(rxdSerialData);
HandleRxdSerialDataResponse(rxdSerialData);
TimeElapsed = TimeElapsed + 1;
m_mainForm.PlotGraphs(rxdSerialVal, TimeElapsed);
string columnSelect = "A";
m_mainForm.XlsxWrite(rxdSerialData, m_mainForm.DataStorageFileLocation, columnSelect);
}
} //try
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
public void XlsxWrite(string rxdSerialData, string dataStorageLocation, string columnSelect)
{
try
{
Invoke(new MethodInvoker(
delegate
{
if ((checkBoxEnableWriteToExcel.Checked) &&
(!string.IsNullOrEmpty(textBoxDataStorageLocation.Text)))
{
RowCount = RowCount + 1;
WriteRxdSerialDataToExcel(rxdSerialData, dataStorageLocation, RowCount, columnSelect);
}
else
{
RowCount = 0;
}
}));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
public void WriteRxdSerialDataToExcel(string rxdSerialData, string dataStorageLocation, int timeElapse, string columnSelect)
{
int row = timeElapse;
string column = columnSelect;
//Converting Row integer to string
string rowStr = row.ToString();
//Open Excel File to conduct Write/Update process
string fileLocation = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dataStorageLocation +
@";Extended Properties=""Excel 12.0; HDR=No;IMEX=3;ImportMixedTypes=Text;TypeGuessRows=0"""; //for reading data IMEX = 1, for writting data IMEX = 3
OleDbConnection pathConnection = new OleDbConnection(fileLocation);
pathConnection.Open();
//write the data into the Excel Spread sheet
string rowColumnCoordinate = String.Concat(column, rowStr);
string excelWrite = String.Format("UPDATE [Sheet1${0}:{0}] SET F1='{1}'", rowColumnCoordinate, rxdSerialData);
OleDbCommand command = new OleDbCommand(excelWrite, pathConnection);
command.ExecuteNonQuery();
pathConnection.Close();
}