Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
1 / 1 / 1
Регистрация: 14.02.2013
Сообщений: 19

Сохранение данных в Excel

19.04.2013, 19:50. Показов 6877. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь сохранить данные в Excel следующим образом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string fileName = "";
Thread thread = new Thread(delegate()
{
        double tmp = Convert.ToDouble(Storage.Stations.Stations[id].ExpectedExtraPower[addRow]);
        tmp = Math.Round(tmp, 2);
        [B]objWorkSheet.Cells[numRow, GetIndexBySymbol('S')] = tmp;[/B]
});
if (Storage.SaveSameFile)
    fileName = Storage.ThroughPutTablesFileName;
else
{
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.OverwritePrompt = false;
    if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        fileName = sfd.FileName;
    else
        return;
}
thread.Start();
Однако никакого сохранения не происходит. Если же вставить после выделенной жирным шрифтом строки:
C#
1
Storage.ObjWorkbook.GetType().InvokeMember("Close", BindingFlags.InvokeMethod, null, Storage.ObjWorkbook, new object[] { true });
то есть закрыть workbook, то появится дополнительное окно с выбором файла на сохранение и в нем если выбрать тот же самый файл что был выбран в моем savefiledialog то опять же эффекта не произойдет, а если выбрать другой файл, то сохранение произойдет как надо. Есть ли у кого-нибудь какие-нибудь мысли насчет этого? Надеюсь понятно объяснил
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2013, 19:50
Ответы с готовыми решениями:

Сохранение данных в Excel.
Приветствую! В общем задача такая. Необходимо сохранить несколько значений из программы (WinForms C#) в документ Excel. Т.е. несколько...

Сохранение данных в Excel файл
Пишу прогу и тут надобность возникла в выгрузке данных в EXCEL файл. Есть ли у кого примеры кода или програмулинки где подсматреть можно...

Re: Сохранение данных в Excel файл
Подскажите как получить информацию сколько срок в эксель файле заполнены, чтобы знать с какой строки начать добавление записей. Или просто...

5
29 / 24 / 8
Регистрация: 25.10.2009
Сообщений: 265
21.04.2013, 01:48
Какой-то монструазный у Вас код для сохранения... в столь поздний час он вообще вгоняет меня в ступор. Выделенной жирным строки я тоже не вижу...
А вообще Excel сохраняется так:
C#
1
ObjWorkBook.SaveAs(fileName);
Потом, если надо, закрываем Excel:
C#
1
2
3
4
5
6
ObjWorkBook.Close();
ObjExcel.Quit();
ObjWorkBook = null;
ObjWorkSheet = null;
ObjExcel = null;
GC.Collect();
Если не хотим что бы вдруг выскочил диалог сохранения (мало ли, может после сохранения Вы успели что-то изменить или макросы там что-поменяли), то первая строчка переписывается так:
C#
1
ObjWorkBook.Close(false, "", null);
1
1 / 1 / 1
Регистрация: 14.02.2013
Сообщений: 19
21.04.2013, 11:27  [ТС]
Спасибо большое за помощь, однако желаемый результат все равно не был достигнут. Теперь при сохранении workbook появляется такое окно:

При нажатии на "Да" вываливается исключение:
0
29 / 24 / 8
Регистрация: 25.10.2009
Сообщений: 265
21.04.2013, 18:21
По поводу первого скриншота: можно попробовать вызвать Save вместо SaveAs. Или же в SaveAs можно передавать другие параметры, кроме пути, среди них есть и игнорирование предупреждения о том что файл только для чтения.
А вот по поводу второго скриншота... Вы уверены что у Вас есть достаточно прав на это файл? Попробуйте после внесения правок в файл сделать:
C#
1
2
ObjExcel.UserControl = true;
ObjExcel.Visible = true;
После этого отобразится Excel в котором открыт этот файл. Попробуйте из самого Excel сохранить файл. Если сохранится, то надо думать дальше что не так, а если не сохранится, тогда ищите проблему в правах.
1
1 / 1 / 1
Регистрация: 14.02.2013
Сообщений: 19
22.04.2013, 15:29  [ТС]
Цитата Сообщение от Predatore Посмотреть сообщение
По поводу первого скриншота: можно попробовать вызвать Save вместо SaveAs. Или же в SaveAs можно передавать другие параметры, кроме пути, среди них есть и игнорирование предупреждения о том что файл только для чтения.
А вот по поводу второго скриншота... Вы уверены что у Вас есть достаточно прав на это файл? Попробуйте после внесения правок в файл сделать:
C#
1
2
ObjExcel.UserControl = true;
ObjExcel.Visible = true;
После этого отобразится Excel в котором открыт этот файл. Попробуйте из самого Excel сохранить файл. Если сохранится, то надо думать дальше что не так, а если не сохранится, тогда ищите проблему в правах.
Сделал как Вы сказали:
C#
1
2
ObjExcel.UserControl = true;
ObjExcel.Visible = true;
Действительно отображается Excel файл, причем в нем видно что произведены правильные изменения, то есть я правильно записываю в него, остается сделать что-то вроде подтверждения, сохранения действий.
Насчет сохранения - я заметил, что когда отображается Excel файл в панели задач то у него пометка: [Только для чтения]. Выходит я изначально открываю файл в read-only режиме. Открываю следующим образом:
C#
1
2
3
4
5
6
7
8
9
10
//Создаём приложение
Storage.ObjExcel = new Microsoft.Office.Interop.Excel.Application();
//Открываем книгу.
Storage.ObjWorkbook =
Storage.ObjExcel.Workbooks.Open(fileName, 0, true, 5, "", "",
true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "",
true, true, 0, true, true, false);
//Выбираем таблицу(лист).
Storage.ObjWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)Storage.ObjWorkbook.Sheets[1];
return Storage.ObjWorksheet;
Подозреваю что за это отвечает один из параметров метода Open().

Upd. Почему - то при открытии в параметре read-only стоял true исправил на false - теперь все отлично работает. Спасибо за помощь!
0
29 / 24 / 8
Регистрация: 25.10.2009
Сообщений: 265
22.04.2013, 21:46
Напоследок, хочу заметить, что есть перегруженный вариант метода Open принимающий только путь к файлу, он по умолчанию всё нормально открывает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2013, 21:46
Помогаю со студенческими работами здесь

Не выполняется сохранение в Excel
int year = DateTime.Now.Year; string god = year.ToString(); string x = ".xls"; string C =...

Сохранение документа Excel
Почему когда сохраняю документ Excel через Microsoft.Interop через Save(), то сохранение производится не в нужную папку, а в "Мои...

Сохранение таблицы Excel из кода
Использую данныйкод для сохранения таблицы в файле Excel try { excelappworkbook =...

Сохранение данных
Есть база данных Access и форма Windows Forms. Вопрос: подскажите как мне записать в данную базу информацию с формы. Форма с базой...

сохранение данных из DataGridView
Имеется главная форма (Form1), через которую вызывается 2я форма (Form2). На второй форме имеется DataGridView (не привязанный ни какой БД,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru