Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
1 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 34
1

Сохранение данных в Excel на рабочем столе

11.08.2017, 14:43. Показов 3081. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Прошу Вашей помощи. Ситуация в следующем: из DGV происходит экспорт в Excel, сохранение файла происходит через saveFileDialog. Все сохраняется, все работает, но проблема в том, что требуется сохранять файл на рабочем столе (по умолчанию), как это можно сделать?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
try
{
string sd;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.FileName = "report";
saveFileDialog1.Filter = "Excel File(*.xlsx)|*.xlsx|All Files(*.*)|*.*";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.ShowDialog();
sd = saveFileDialog1.FileName;
 
exApp.ActiveWorkbook.SaveCopyAs(sd + ".xlsx");
exApp.ActiveWorkbook.Saved = true;
exApp.Visible = true;
MessageBox.Show("Файл сохранен!");
 
                
}
catch
{
}
Еще проблема в том, что данный код не закрывает процесс Excel. Если прописываю exApp.Quit(), то сформированный файл сам не открывается.

Помогите плиииз.

В общем необходимо:
1. Сохранение сформированного файла на рабочем столе (по умолчанию).
2. Открытие сформированного файла.
3. Закрытие процесса Excel (чтобы не было висяков).

Не важно в какой последовательности
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2017, 14:43
Ответы с готовыми решениями:

Программы не запускаются на рабочем столе, ко всем ярлыкам на рабочем столе добавляется приставка .Ink
Помогите пожалуйста, использовал рекомендованную вами программу CureIT (нашел 18 вредоносных...

Сохранение файла на рабочем столе
Привет Помогите со скриптом) Private Sub Form_Load() Dim xHttp: Set xHttp =...

Сохранение файла на рабочем столе
Собственно сабж как сохранить файл на робочем столе ?! файл сохраняю через Мемо тоесть...

Как получить разрешение на сохранение и создание файлов на рабочем столе?
пример - редактирую документ Word, затем нажимаю "Сохранить как", и если я выбираю пункт директории...

7
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
11.08.2017, 15:31 2
diadlos, используй свойство InitialDirectory и Environment.GetFolderPath()
C#
1
saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
Плюс в код не помешает добавить проверку на результат работы диалога чтобы работа делалась только при нажатии ОК
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
string sd = null;
using (SaveFileDialog saveFileDialog1 = new SaveFileDialog())
{
    saveFileDialog1.FileName = "report";
    saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    saveFileDialog1.Filter = "Excel File(*.xlsx)|*.xlsx|All Files(*.*)|*.*";
    saveFileDialog1.FilterIndex = 1;
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        sd = saveFileDialog1.FileName;
    }
}
 
if (sd != null)
{
    try
    {
        exApp.ActiveWorkbook.SaveCopyAs(sd + ".xlsx");
        exApp.ActiveWorkbook.Saved = true;
        exApp.Visible = true;
        MessageBox.Show("Файл сохранен!");
    }
    catch
    {
    }
}
2
1 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 34
11.08.2017, 16:50  [ТС] 3
OwenGlendower, спасибо за помощь.
Хотел уточнить, а что если без диалогового окна сохранять сразу на рабочем столе файл, то это как сделать?
Предполагаю, что в этой комбинации можно что-то сделать, просто не пойму как.
C#
1
exApp.ActiveWorkbook.SaveCopyAs(sd + ".xlsx")
При этом, как я понимаю, процесс xls все равно будет висеть? Получается, что файл сохраняется, с именем report. Далее всплывает сформированный файл exApp (лист1). Я например закрываю exApp (лист1), но процесс висит.

Если использовать
C#
1
exApp.Quit()
, то не получится просмотреть сформированный файл. Придется запускать report с рабочего стола.

Хотелось бы просто, нажал на кнопку выгрузки, файл сохранился на раб.столе, при этом произошел запуск сформированного файла xls. При закрытии файла, процесс бы убивался.

Такое возможно?
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
11.08.2017, 17:31 4
Лучший ответ Сообщение было отмечено diadlos как решение

Решение

diadlos, если без диалога, то делаем так:
C#
1
2
string reportPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "report.xslx");
exApp.ActiveWorkbook.SaveCopyAs(reportPath);
Цитата Сообщение от diadlos Посмотреть сообщение
Хотелось бы просто, нажал на кнопку выгрузки, файл сохранился на раб.столе, при этом произошел запуск сформированного файла xls. При закрытии файла, процесс бы убивался.
Вызывай Quit() и запускай Excel отдельно с помощью Process.Start(reportPath).
1
1 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 34
11.08.2017, 18:34  [ТС] 5
OwenGlendower, отлично, это то что нужно! Спасибо!

Однако проблема с убиванием процесса не срабатывает. Вот код
C#
1
2
3
4
5
6
                string reportPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "report.xlsx");
                exApp.ActiveWorkbook.SaveCopyAs(reportPath);
                exApp.ActiveWorkbook.Saved = true;                
                exApp.Quit();
                MessageBox.Show("Файл сохранен!");
                Process.Start(reportPath);
Получается, что даже если не запускать Process.Start , то процесс xls висит в списке. При запуске, будет висеть два
Как-то можно от этого уйти?

Добавлено через 13 минут
Все, понял почему висит процесс. Пока форму не закроешь, один процесс EXCEL продолжает висеть.
В целом это не критично.

OwenGlendower, спасибо за помощь!
0
1 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 34
14.08.2017, 14:52  [ТС] 6
Добрый день!

В очередной раз нужна помощь с сохранением сформированного файла xls.

На данный момент все работает идеально, но если я сохраняю повторно пытаюсь сохранить файл с одним и тем же названием, то система просто перезаписывает файл, который был на рабочем столе. Есть ли вариант, который позволял бы вывести предупреждение о том, что файл с таким именем уже существует и с порядком действий (сохранить, заменить и т.п.).

Буду оч признателен за ответ!
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,344
Записей в блоге: 1
15.08.2017, 13:26 7
diadlos,
C#
1
2
3
4
5
6
7
8
9
10
11
string reportPath = "...";
if (!File.Exists(reportPath))
{
    // Файл не существует. Сохраняем как есть
    exApp.ActiveWorkbook.SaveCopyAs(reportPath);
}
else
{
    // Файл уже существует. Спрашиваем у пользователя как поступить
    // ...
}
1
1 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 34
15.08.2017, 18:28  [ТС] 8
OwenGlendower, спасибо, что помогаешь!
У меня что-то не вышло, не затруднит написать как это должно быть полностью применено для этого кода:
C#
1
2
3
4
5
6
                string reportPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "report.xlsx");
                exApp.ActiveWorkbook.SaveCopyAs(reportPath);
                exApp.ActiveWorkbook.Saved = true;                
                exApp.Quit();
                MessageBox.Show("Файл сохранен!");
                Process.Start(reportPath);
Заранее спасибо за помощь!
0
15.08.2017, 18:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2017, 18:28
Помогаю со студенческими работами здесь

Работа с диапазонами данных на рабочем листе MS Excel
Известно, в какую смену учится класс школы. класс / смена 1---------2 1---------2 2---------3...

Напоминание на рабочем столе
Вывод на рабочий стол напоминания при старте компьютера

банер на рабочем столе
Привет всем! Суть проблемы такова. Есть банер на рабочем столе требующий пополнить счет на номер...

Сайт на рабочем столе
В Windows XP была функция в Action Desktop, которая даёт возможность размещать окна с ссылкой на...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru