Экспорт данных в 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д