Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для TrueSize
2 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 131
.NET 4.x

Ошибка при экспорте данных в Excel

23.06.2013, 18:57. Показов 1736. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени! Делаю вывод данных в Excel документ, но возникла проблема.
Новый документ создается в нужном месте, на первый взгляд все работает прекрасно, но, при попытке открыть созданный файл Excel сообщает:
Клик

Помогите пожалуйста разобраться.
Вот код, который все это делает:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//Вывод в excel
        Excel.Application excel = new Excel.Application(); //создаемCOM-объектExcel
        Workbook book; //новая книга
        Worksheet sheet; //вкладка
        object misValue = System.Reflection.Missing.Value;
 
        private void button_generateExcel_Click(object sender, EventArgs e)
        {
            string filePath =  Environment.CurrentDirectory + "\\report.xlsx"; //путь к файлу
 
            book = excel.Workbooks.Open(filePath, 0, false, 5, "", "", true, 
                XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); //открыть существующий
 
            sheet = (Worksheet)book.Worksheets.get_Item(1);
 
            sheet.Cells[1][1] = "PRIVET BRO!";
 
 
            //Сохранить в нужную директорию
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                pathEx = folderBrowserDialog1.SelectedPath;
            }
 
            try
            {
                string FileName = String.Format(pathEx + "\\{0}.xlsx", textBox_newMemberFIO.Text);
 
                book.SaveAs(FileName, XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue,
               misValue, XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
 
                book.Close(true, misValue, misValue);
                excel.Quit();
 
                MessageBox.Show("Отчет успешно создан!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Отчет не создан! " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                releaseObject(book);
                releaseObject(sheet);
                releaseObject(excel);
                ProcessKill("EXCEL");
            }
        }
Где я запутался?

PS
При написании своего кода пользовался вот этим примером:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using Microsoft.Office.Interop.Excel;
using System.IO;
class ExcelValuesWriter
{
    public void WorkWithExcel()
    {
        Application xlApp = new ApplicationClass();
        Workbook xlWorkBook;
        Worksheet xlWorkSheet;
        object misValue = System.Reflection.Missing.Value;
        string filePath = "c:\\InputValuesExcel.xls";
        //Если не существует файла то создать его
        bool isFileExist;
        FileInfo fInfo = new FileInfo(filePath);
        if (!fInfo.Exists)
        {
            xlWorkBook = xlApp.Workbooks.Add(misValue);//Добавить новый book в файл
            isFileExist = false;
        }
        else
        {
            //Открыть существующий файл
            xlWorkBook = xlApp.Workbooks.Open(filePath, 0, false, 5, "", "", true, 
                XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            isFileExist = true;
        }
        //Открытие первой вкладки
        xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.get_Item(1);
        //Запись значения в самую первую ячейку
        xlWorkSheet.Cells[1, 1] = "Client Name";
 
        //Получить количество используемых столбцов
        int columnsCount = xlWorkSheet.UsedRange.Columns.Count;
        //Получить количество используемых строк
        int usedRowsCount = xlWorkSheet.UsedRange.Rows.Count;
        //Проверить значение последней используемой ячейки в последней исползуеймой строке и 
        //последнем используемом столбце. Если значение этой ячейки равно "Привет", изменить его на "Пока".
        if ((xlWorkSheet.UsedRange.Cells[usedRowsCount, columnsCount] as Range).Value2 != null)
        {
            if ((xlWorkSheet.UsedRange.Cells[usedRowsCount, columnsCount] as Range).Value2.ToString() == "Привет")
                (xlWorkSheet.UsedRange.Cells[usedRowsCount, columnsCount] as Range).Value2 = "Пока";
        }
        //Если файл существовал, просто сохранить его по умолчанию. Иначе сохранить в указанную директорию
        if (isFileExist)
        {
            xlWorkBook.Save();
        }
        else
        {
            xlWorkBook.SaveAs(filePath, XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, 
                misValue, XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
        }
        xlWorkBook.Close(true, misValue, misValue);
        xlApp.Quit();
        //Освобождение ресурсов
        releaseObject(xlWorkSheet);
        releaseObject(xlWorkBook);
        releaseObject(xlApp);
    }
    private void releaseObject(object obj)
    {
        try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            obj = null;
        }
        catch (Exception ex)
        {
            obj = null;
            Console.Write("Exception Occured while releasing object " + ex.ToString());
        }
        finally
        {
            GC.Collect();
        }
    }
}
Добавлено через 2 часа 12 минут
Хм, проблема была решена...
В строчке:
C#
1
string FileName = String.Format(pathEx + "\\{0}.xlsx", textBox_newMemberFIO.Text);
Поменял расширение будущего файла на xls и все получилось:
C#
1
string FileName = String.Format(pathEx + "\\{0}.xls", textBox_newMemberFIO.Text);
По прежнему остается загадкой, почему не открывался документ .xlsx
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.06.2013, 18:57
Ответы с готовыми решениями:

Ошибка при экспорте данных из DBgrid в excel
Доброго времени суток! Возникла такая проблема: Выдает ошибку ( Unit1.pas(208): Undeclared identifier: 'CreateOleObject' ), хотя нужные...

Ошибка при экспорте данных из Access в Excel
При экспорте данных из Access в Excel у меня выскакивает ошибка, что 'число выводимых строк превышает число, допустимое для данного формата...

Ошибка при экспорте данных из Matlab в Excel
Помогите пожалуйста! Всё работало, данные выгружались в Excel и вдруг перестало! Выдает ошибку даже при запуске примера из HELP: ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2013, 18:57
Помогаю со студенческими работами здесь

Как выгрузить процесс Excel из памяти при экспорте данных из ASP.Net (C#) в Excel?
Здравствуйте! Как выгрузить процесс Excel из памяти при экспорте данных из ASP.Net (C#) в Excel? Вопрос обсуждается везде и много...

Ошибка при экспорте в Excel
Здравствуйте! При нажатии на кнопку Excel получаю ошибку: Control 'GridView1' of type 'GridView' must be placed inside a form tag with...

Ошибка при экспорте из DBGrid в Excel
При выполнении кода происходит ошибка, приведенная на фото. Помогите понять в чем причина. Выполняется экспорт всей таблицы в Excel. ...

Проблемы при экспорте данных из GridView в Excel
мой вопрос такой.. я создал GridView и пытаюсь его экспортировать в Excel. работает нормально, но стоит мне в GridView добавить его...

Сложности при экспорте данных из Mathcad в Excel
Добрый вечер. Имеется следующая задача. В файле mathcad реализуется перебор параметров посредством встроенной функции анимации (см. код)....


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru