Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OleDB запись в существующий Excel файл. 
:(
    Опции темы
Nerfair
Дата 19.9.2012, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 11.3.2012

Репутация: нет
Всего: нет



Добрый день, существует файл .xlsx с уже готовым бланком счет-фактуры (инвойса) который должен заполняться с помощью программы написанной на C#.
Первая реализация была написана мной с помощью Microsoft.Office.Interop.Excel, и там поля заполнялись очень просто через 
Код

sheet.get_Range("A1").Value = "Текст";


Позже оказалось что не на всех компьютерах где будет использоваться эта программа есть Excel (установлен OpenOffice), и приходится переписывать программу с использованием OleDB.
Все казалось бы не плохо, но я встрял на моменте записи данных в фиксированную ячейку (допустим D14).

Пробовал через
Код

MyConnection.Open();
                myCommand.Connection = MyConnection;
                string sql = "INSERT INTO [Sheet1$] (F1) values ('111')";
                myCommand.CommandText = sql;
                myCommand.ExecuteNonQuery();

и 
Код

MyConnection.Open();
                myCommand.Connection = MyConnection;
                string sql = "INSERT INTO [Sheet1$] (Users) values ('111')";
                myCommand.CommandText = sql;
                myCommand.ExecuteNonQuery();


Но это все не то, ибо пишет в первую не заполненную ячейку столбца.
Как быть?

---

Update:

Значения в нужных ячейках получилось обновлять через 
Код


                MyConnection.Open();
                myCommand = new OleDbCommand("UPDATE [Sheet1$B6:B6] SET F1=123456", MyConnection);
                myCommand.ExecuteNonQuery();
                MyConnection.Close();


А как делать Save as?
Есть идея перед редактированием копировать файл, копию редактировать и после переносить в нужную папку.

---

Код


                int unixTime = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
                string filePath = Path.GetDirectoryName(Application.ExecutablePath) + "\\invoice.xls";
                string newPath = filePath.Remove(filePath.Trim().Length - 11) + "Invoice." + unixTime + ".xls";

Сделано  smile 

Это сообщение отредактировал(а) Nerfair - 19.9.2012, 18:34
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0874 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.