// использование системы;
// использование 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])) убивать ();
}
ловить { }
}
}
}