///
/// Excel de una sola vez escribir grandes cantidades de datos de forma rápida
///
/// ruta de libro
/// para escribir el nombre de la hoja
privada vacío WriteExcel (ruta String, String SHEETNAME)
{
Microsoft.Office.Interop.Excel.Application nueva nueva aplicación Microsoft.Office.Interop.Excel.Application = () ;
app.Visible = false; // no muestran EXCEL
app.DisplayAlerts = false; // ningún mensaje
app.ScreenUpdating = false; // dejar de actualizar la pantalla, velocidad de hasta
libros WBS = app.Workbooks; // obtener el libro
_Workbook wb = wbs.Open (ruta); // apertura de archivos
hojas SHS = wb.Worksheets; hojas // archivo de
tabla System.Data.DataTable = GetDataTable (); // llamar al método GetDataTable () para obtener la tabla de memoria DataTable
CopyDataToSheet ( de mesa, SHS [SheetName]); // llamar al método, los datos se escriben en DataTable en la Hoja
wb.Save(); //保存
wb.Close(); //关闭工作薄
app.Quit(); //关闭EXCEL
MessageBox.Show("OK");
}
//快速写入(先写入数组,然后一次性将数组写入到EXCEL中)
private void CopyDataToSheet(System.Data.DataTable Table, _Worksheet Sheet)
{
int colCount, rowCount;
colCount = Table.Columns.Count;
rowCount = Table.Rows.Count;
Range range;
//写入标题行
range = Sheet.get_Range("A1", Missing.Value);
range = range.get_Resize(1, colCount);
object[,] headerData = new object[1, colCount];
for (int iCol = 0; iCol < colCount; iCol++)
{
headerData[0, iCol] = Table.Columns[iCol].ColumnName;
}
range.set_Value(Missing.Value, headerData);
//写入数据行
range = Sheet.get_Range("A2", Missing.Value);
range = range.get_Resize(rowCount, colCount);
object[,] cellData = new object[rowCount, colCount];
for (int iRow = 0; iRow < rowCount; iRow++)
{
for (int iCol = 0; iCol < colCount; iCol++)
{
cellData[iRow, iCol] = Table.Rows[iRow][iCol].ToString();
}
}
range.set_Value(Missing.Value, cellData);
}