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

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

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

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

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

textual
Листинг программы
  1. using System;
  2. using System.Diagnostics;
  3. using System.IO;
  4. using System.Runtime.InteropServices;
  5. using System.Windows.Forms;
  6.  
  7. using Microsoft.Office.Interop.Excel;
  8.  
  9. using Application = Microsoft.Office.Interop.Excel.Application;
  10.  
  11. namespace WindowsFormsApplicationTest2 {
  12.     public partial class MainForm : Form {
  13.         private Application application;
  14.         private Workbook workBook;
  15.         private Worksheet worksheet;
  16.  
  17.         public MainForm() {
  18.             InitializeComponent();
  19.         }
  20.  
  21.         // Передаём данные в Excel
  22.         private void buttonToExcel_Click( object sender, EventArgs e ) {
  23.             // Открываем приложение
  24.             application = new Application {
  25.                 DisplayAlerts = false
  26.             };
  27.  
  28.             // Файл шаблона
  29.             const string template = "template.xlsm";
  30.  
  31.             // Открываем книгу
  32.             workBook = application.Workbooks.Open( Path.Combine( Environment.CurrentDirectory, template ) );
  33.  
  34.             // Получаем активную таблицу
  35.             worksheet = workBook.ActiveSheet as Worksheet;
  36.  
  37.             // Записываем данные
  38.             worksheet.Range[ "A2" ].Value = DateTime.Now;
  39.             worksheet.Range[ "A4" ].Value = textData1.Text;
  40.             worksheet.Range[ "A6" ].Value = textData2.Text;
  41.             for ( int i = 0; i < checkedListData3.Items.Count; i++ ) {
  42.                 worksheet.Cells[ i + 8, 1 ].Value = checkedListData3.Items[ i ];
  43.                 worksheet.Cells[ i + 8, 2 ].Value = checkedListData3.GetItemChecked( i ) ? "Checked" : "Unchecked";
  44.             }
  45.  
  46.             // Показываем приложение
  47.             application.Visible = true;
  48.             TopMost = true;
  49.  
  50.             buttonCloseExcel.Enabled = true;
  51.         }
  52.  
  53.         private void buttonCloseExcel_Click( object sender, EventArgs e ) {
  54.             // Сохраняем и закрываем
  55.             string savedFileName = "book1.xlsm";
  56.             workBook.SaveAs( Path.Combine( Environment.CurrentDirectory, savedFileName ) );
  57.             CloseExcel();
  58.         }
  59.  
  60.         private void CloseExcel() {
  61.             if ( application != null ) {
  62.                 int excelProcessId = -1;
  63.                 GetWindowThreadProcessId( application.Hwnd, ref excelProcessId );
  64.  
  65.                 Marshal.ReleaseComObject( worksheet );
  66.                 workBook.Close();
  67.                 Marshal.ReleaseComObject( workBook );
  68.                 application.Quit();
  69.                 Marshal.ReleaseComObject( application );
  70.  
  71.                 application = null;
  72.                 // Прибиваем висящий процесс
  73.                 try {
  74.                     Process process = Process.GetProcessById( excelProcessId );
  75.                     process.Kill();
  76.                 }
  77.                 finally {}
  78.             }
  79.         }
  80.  
  81.         [DllImport( "user32.dll", SetLastError = true )]
  82.         static extern uint GetWindowThreadProcessId( int hWnd, ref int lpdwProcessId );
  83.  
  84.         private void MainForm_FormClosed( object sender, FormClosedEventArgs e ) {
  85.             CloseExcel();
  86.         }
  87.     }
  88. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут