Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > OleDB и Excel. "Непостоянные" функции


Автор: Nerfair 25.9.2012, 11:31
Доброе время суток, есть документ .xls (excel) который открывается в C# с помощью OleDB, и в него добавляется два числа (допустим 3,5 и 7,1).
В .xls документе есть клетка в которой складываются эти два значания  (=sum(A1:A2)).
Позже эта клетка (с суммой) опять считается в C#

Проблема:
После внесения изменений в xls файл с помощью C#/OleDB клетка с суммой из C# не читается.

К чему пришел за время попыток фикса:
Если открыть документ в экселе и ничего не изменяя нажать "сохранить" (либо ctrl+s) то клетка в C# считывается нормально, если оставить без изменений и не сохранять - то нет.  smile 
Проблема еще в том что изначально документ не вызывает никаких ошибок, а после изменения он при закрытии просит сохранить изменения, как буд то
что то менялось. В интернете нашел информацию о так называемых непостоянных функциях (Volatile), но у меня в документе нет ничего похоже на =NOW().

Код

Как вносятся значения в .xls :
                myCommand = new OleDbCommand("UPDATE [Sheet1$A1:A1] SET F1='xxx'", MyConnection);
                myCommand.ExecuteNonQuery();


Как считываются

Код

 myCommand = new OleDbCommand("SELECT * FROM [Sheet1$A3:A3]", MyConnection);
                myReader = myCommand.ExecuteReader();
                while (myReader.Read())
                {
                    resultBox.Text += "\n" + myReader.GetDouble(0);
                }
                myReader.Close();


Кто нибудь сталкивался?


---

Прикрепил архив, invoice.xls закинуть в десктоп smile

Автор: dim4an 25.9.2012, 22:12
а вам принципиально нужно использовать OleDB для работы с эксел? Если нет, то рекомендую вам заюзать Aspose Cell, функционал данной библиотеки для работы с ексел документами, гораздо мощнее. Попробуйте посмотреть в ее сторону

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)