Excelhelper

// использование системы;
// использование System.Collections.Generic;
// использование System.Text;

// Пространство имен OA_LZZ0902.DAL
// {
// класс Excel123456
// {
//}
//}

 

с использованием системы;

используя System.Collections;

используя System.Text;

используя System.Data;

используя System.Threading;

используя System.Windows.Forms;

используя System.Collections.Generic;

используя Microsoft.Office.Core;

с помощью Excel = Microsoft.Office.Interop.Excel;

 

общественный класс ExportToExcel

{

общественного Excel.Application m_xlApp = NULL;

 

общественного недействительными OutputAsExcelFile (DataGridView DataGridView)

{

если (dataGridView.Rows.Count <= 0)

{

MessageBox.Show ( "无 数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); вернуть;

}

Строка Filepath = "";

SaveFileDialog з = новый SaveFileDialog ();

Подзаг = «Сохранить файл Excel»;

s.Filter = "Файл Excel (* .xls) | * .xls";

s.FilterIndex = 1;

если (s.ShowDialog () == DialogResult.OK)

Filepath = s.FileName;

еще

вернуть;

 

// Первый шаг: DataGridView в DataTable, так что вы можете отфильтровать скрытые столбцы DataGridView

 

DataTable tmpDataTable = новый DataTable ( "tmpDataTable");

DataTable modelTable = новый DataTable ( "ModelTable");

для (INT столбец = 0; столбец <dataGridView.Columns.Count; колонок ++)

{

если (dataGridView.Columns [колонка] .Visible == TRUE)

{

DataColumn tempColumn = новый DataColumn (dataGridView.Columns [колонка] .HeaderText, TypeOf (строка));

tmpDataTable.Columns.Add (tempColumn);

DataColumn modelColumn = новый DataColumn (dataGridView.Columns [колонка] .Name, TypeOf (строка));

modelTable.Columns.Add (modelColumn);

}

}

для (интермедиат строка = 0; строка <dataGridView.Rows.Count; строка ++)

{

если (dataGridView.Rows [строка] .Visible == ложь)

Продолжить;

DataRow tempRow = tmpDataTable.NewRow ();

для (INT I = 0; г <tmpDataTable.Columns.Count; я ++)

tempRow [I] = dataGridView.Rows [строка] .Cells [modelTable.Columns [я] .ColumnName] .Value;

tmpDataTable.Rows.Add (tempRow);

}

если (tmpDataTable == NULL)

{

вернуть;

}

 

// Шаг два: DataTable экспортируются в Excel

долго RowNum = tmpDataTable.Rows.Count; // 行 数

INT columnNum = tmpDataTable.Columns.Count; // 列 数

Excel.Application m_xlApp = новый Excel.Application ();

m_xlApp.DisplayAlerts = false; // подсказка не показывает изменений

m_xlApp.Visible = ложь;

 

Excel.Workbooks учебные пособия = m_xlApp.Workbooks;

Excel.Workbook Учебное пособие = workbooks.Add (Excel.XlWBATemplate.xlWBATWorksheet);

Excel.Worksheet рабочий лист = (Excel.Worksheet) workbook.Worksheets [1]; // 取得 лист1

 

пытаться

{

Строка [,] = Данные новая строка [RowNum + 1, columnNum];

для (INT I = 0; I <columnNum; я ++) // поле записи

Данные [0, I] = tmpDataTable.Columns [I] .Caption;

//Excel.Range диапазон = worksheet.get_Range (worksheet.Cells [1, 1], worksheet.Cells [1, columnNum]);

Excel.Range диапазон = m_xlApp.Range [worksheet.Cells [1, 1], worksheet.Cells [1, columnNum]];

range.Interior.ColorIndex = 15; // 15 представитель серого

range.Font.Bold = TRUE;

range.Font.Size = 10;

 

INT R = 0;

для (г = 0; г <RowNum; г ++)

{

для (INT I = 0; г <columnNum; я ++)

{

объект OBJ = tmpDataTable.Rows [г] [tmpDataTable.Columns [I] .ToString ()];

Данные [г + 1, я] = OBJ == NULL "": "«" + obj.ToString () Обрезка (); // в obj.toString () до того, как одиночные кавычки, чтобы предотвратить автоматическое преобразование формата?.

}

System.Windows.Forms.Application.DoEvents ();

// добавить индикатор

}

//Excel.Range fchR = worksheet.get_Range (worksheet.Cells [1, 1], worksheet.Cells [RowNum + 1, columnNum]);

Excel.Range fchR = m_xlApp.Range [worksheet.Cells [1, 1], worksheet.Cells [RowNum + 1, columnNum]];

fchR.Value2 = даты;

 

worksheet.Columns.EntireColumn.AutoFit (); // адаптивная ширина столбца.

//worksheet.Name = "дд";

 

//m_xlApp.WindowState = Excel.XlWindowState.xlMaximized;

m_xlApp.Visible = ложь;

 

// = worksheet.get_Range (worksheet.Cells [1, 1], worksheet.Cells [RowNum + 1, columnNum]);

Диапазон = m_xlApp.Range [worksheet.Cells [1, 1], worksheet.Cells [RowNum + 1, columnNum]];

 

//range.Interior.ColorIndex = 15; // 15 представителей Серый

range.Font.Size = 9;

range.RowHeight = 14,25;

range.Borders.LineStyle = 1;

range.HorizontalAlignment = 1;

workbook.Saved = TRUE;

workbook.SaveCopyAs (Filepath);

}

улов (Исключение бывших)

{

MessageBox.Show ( "Экспорт Исключение:" + ex.Message, "Экспорт ненормальным", MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

в конце концов

{

Изменение порта ();

}

 

m_xlApp.Workbooks.Close ();

m_xlApp.Workbooks.Application.Quit ();

m_xlApp.Application.Quit ();

m_xlApp.Quit ();

MessageBox.Show ( "Экспорт успех!", "Подсказка", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

частная пустота EndReport ()

{

объект отсутствует = System.Reflection.Missing.Value;

пытаться

{

//m_xlApp.Workbooks.Close ();

//m_xlApp.Workbooks.Application.Quit ();

//m_xlApp.Application.Quit ();

//m_xlApp.Quit ();

}

ловить { }

в конце концов

{

пытаться

{

System.Runtime.InteropServices.Marshal.ReleaseComObject (m_xlApp.Workbooks);

System.Runtime.InteropServices.Marshal.ReleaseComObject (m_xlApp.Application);

System.Runtime.InteropServices.Marshal.ReleaseComObject (m_xlApp);

m_xlApp = NULL;

}

ловить { }

пытаться

{

// обработка мусора

this.killProcessThread ();

}

ловить { }

GC.Collect ();

}

}

 

частная пустота killProcessThread ()

{

ArrayList myProcess = новый ArrayList ();

для (INT I = 0; я <myProcess.Count; я ++)

{

пытаться

{

. System.Diagnostics.Process.GetProcessById (int.Parse ((строка) myProcess [I])) убивать ();

}

ловить { }

}

}

}

рекомендация

отwww.cnblogs.com/LiZhongZhongY/p/11468386.html