OLEDB с обновлением ячеек Excel - PullRequest
3 голосов
/ 06 февраля 2012

Я написал этот метод для обновления ячейки Excel:

public void update(string fileName, string sheetName)
{
   string connString = connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(fileName) + ";Extended Properties=Excel 12.0";

try
{
   OleDbConnection oledbConn = new OleDbConnection(connString);

   oledbConn.Open();

  OleDbCommand cmd = new OleDbCommand("UPDATE ["+sheetName+"$B5:B5] SET F1=17", oledbConn);

  cmd.ExecuteNonQuery();

  oledbConn.Close();
}
catch(Exception ex)
{
  Debug.Write("Error: " + ex.Message);
}
}

Я назвал это так:

update("test.xls", "test");

Ячейка B5 доступна в «тестовом» листе, но значение никогда не обновляется.

Я даже пробовал с этим:

UPDATE ["+sheetName+"$B5:B5] SET F1='17'

и я всегда получал это исключение: для одного или нескольких обязательных параметров не задано значение.

Есть идеи?

Заранее спасибо.

1 Ответ

5 голосов
/ 06 февраля 2012

РЕДАКТИРОВАТЬ Я заметил, что вы пропустили HDR = Нет.

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + 
";Extended Properties=""Excel 12.0;HDR=No"""

EDIT Протестировано в C # Express

Либо:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=z:\\docs\\myspreadsheet.xls;Extended Properties='Excel 12.0 xml;HDR=No'"

Примечание xml

Или

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=z:\\docs\\myspreadsheet.xls;Extended Properties='Excel 8.0;HDR=No'"

Для * .xls

...