Экспорт данных в Excel - C# (180908)

Узнай цену своей работы

Формулировка задачи:

Товарищи, приветствую, практически закончил один из своих первых не комерческих, но достаточно ответственных проектов. Но встал, что называется, на предпоследней ступени - это реализация отправки содержимого ричтекстбокса (а туда выводятся сугубо сублимированные данные, типа резултьты расчетов формул, которые собственно фискируются у меня в разных текстбоксах.) в эксель. Видел ряд обсуждений на эту тему в формуе, однако возникли следующего рода вопросы: Мне нужно чтобы при нажатии на кнопку, запускалась обработка следующей процедуры. 0. Создавался новый файл эксель с определенными полями 1. Как сделать так, чтобы в определенные ячейки с названиями, я закатал нужную инфу. 2. Реализовать заполнение поля дата/тайм, чтобы при открытии файла было видно когда была выполнена обработка. 3. Сохранение файла в определенной папке. Процедура должна создавать каждый раз новый файл. Тоесть пункт 0 обязательно должен выполняться по новой. Это нужно для той цели чтобы этот файл потом можно было отправлять по имайл. Очень жду советов корифеев. Заранее благодарен.

Решение задачи: «Экспорт данных в Excel»

textual
Листинг программы
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
 
using Microsoft.Office.Interop.Excel;
 
using Application = Microsoft.Office.Interop.Excel.Application;
 
namespace WindowsFormsApplicationTest2 {
    public partial class MainForm : Form {
        private Application application;
        private Workbook workBook;
        private Worksheet worksheet;
 
        public MainForm() {
            InitializeComponent();
        }
 
        // Передаём данные в Excel
        private void buttonToExcel_Click( object sender, EventArgs e ) {
            // Открываем приложение
            application = new Application {
                DisplayAlerts = false
            };
 
            // Файл шаблона
            const string template = "template.xlsm";
 
            // Открываем книгу
            workBook = application.Workbooks.Open( Path.Combine( Environment.CurrentDirectory, template ) );
 
            // Получаем активную таблицу
            worksheet = workBook.ActiveSheet as Worksheet;
 
            // Записываем данные
            worksheet.Range[ "A2" ].Value = DateTime.Now;
            worksheet.Range[ "A4" ].Value = textData1.Text;
            worksheet.Range[ "A6" ].Value = textData2.Text;
            for ( int i = 0; i < checkedListData3.Items.Count; i++ ) {
                worksheet.Cells[ i + 8, 1 ].Value = checkedListData3.Items[ i ];
                worksheet.Cells[ i + 8, 2 ].Value = checkedListData3.GetItemChecked( i ) ? "Checked" : "Unchecked";
            }
 
            // Показываем приложение
            application.Visible = true;
            TopMost = true;
 
            buttonCloseExcel.Enabled = true;
        }
 
        private void buttonCloseExcel_Click( object sender, EventArgs e ) {
            // Сохраняем и закрываем 
            string savedFileName = "book1.xlsm";
            workBook.SaveAs( Path.Combine( Environment.CurrentDirectory, savedFileName ) );
            CloseExcel();
        }
 
        private void CloseExcel() {
            if ( application != null ) {
                int excelProcessId = -1;
                GetWindowThreadProcessId( application.Hwnd, ref excelProcessId );
 
                Marshal.ReleaseComObject( worksheet );
                workBook.Close();
                Marshal.ReleaseComObject( workBook );
                application.Quit();
                Marshal.ReleaseComObject( application );
 
                application = null;
                // Прибиваем висящий процесс
                try {
                    Process process = Process.GetProcessById( excelProcessId );
                    process.Kill();
                }
                finally {}
            }
        }
 
        [DllImport( "user32.dll", SetLastError = true )]
        static extern uint GetWindowThreadProcessId( int hWnd, ref int lpdwProcessId );
 
        private void MainForm_FormClosed( object sender, FormClosedEventArgs e ) {
            CloseExcel();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5