Excel一次性大量數據快速寫入


///


/// Excel一次性大量數據快速寫入
///

/// 工作薄路徑
/// 要寫入的工作表名字
private void WriteExcel(string path,string sheetName)
{
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = false; //不顯示EXCEL
app.DisplayAlerts = false; //不提示信息
app.ScreenUpdating = false; //停止更新屏幕,加快速度
Workbooks wbs = app.Workbooks; //獲取工作薄
_Workbook wb = wbs.Open(path); //打開文件
Sheets shs = wb.Worksheets; //文件中的Sheets
System.Data.DataTable table = getDataTable();//調用getDataTable()方法獲取DataTable內存表
CopyDataToSheet(table, shs[sheetName]); //調用方法,將DataTable里的數據寫入到Sheet中

        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);
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM