.net Excel 批量插入效能慢
.NET Excel 2003 批量插入資料很慢的解決辦法
.Net利用Office元件的操作Excel批量插入資料據的時候,會非常慢。
我也曾經想利用其它元件來實現這個功能,但是效果不是很理想。後來經過查閱資料,發現Excel.Range的Value屬性是Object的二維陣列。
於是我想,不去遍歷每個單元格,而是一次取得所要操作區域(Range)的Value屬性,對這個二維陣列操作,最後再把這個二維陣列賦回去,就大功能告成了。
經過編碼測試,與我想象中的一樣,速度非常之快。
之前程式碼:
附上C#的程式碼
Excel.Application app = new Excel.Application();
app.Visible = true;
Excel.Workbook book = app.Workbooks.Add(Missing.Value);
Excel.Worksheet sheet = (Excel.Worksheet)(book.Sheets[1]);
object[,] ary = (object[,])(sheet.get_Range("A1:Z1000", Missing.Value).Value2);
for (int i = 1; i <= 1000; i++)
{
for (int j = 1; j <= 26; j++)
{
ary[i, j] = "R" + i.ToString() + "C" + j.ToString();
}
}
sheet.get_Range("A1:Z1000", Missing.Value).Value2 = ary;
我也曾經想利用其它元件來實現這個功能,但是效果不是很理想。後來經過查閱資料,發現Excel.Range的Value屬性是Object的二維陣列。
於是我想,不去遍歷每個單元格,而是一次取得所要操作區域(Range)的Value屬性,對這個二維陣列操作,最後再把這個二維陣列賦回去,就大功能告成了。
經過編碼測試,與我想象中的一樣,速度非常之快。
之前程式碼:
Dim app As New Excel.Application
app.Visible = True
Dim book As Excel.Workbook = app.Workbooks.Add()
Dim sheet As Excel.Worksheet = book.Sheets(1)
For i As Integer = 1 To 1000
For j As Integer = 1 To 26
sheet.Cells(i, j).Value = "R" & i & "C" & j
Next
Next
之後程式碼:app.Visible = True
Dim book As Excel.Workbook = app.Workbooks.Add()
Dim sheet As Excel.Worksheet = book.Sheets(1)
For i As Integer = 1 To 1000
For j As Integer = 1 To 26
sheet.Cells(i, j).Value = "R" & i & "C" & j
Next
Next
Dim app As New Excel.Application
app.Visible = True
Dim book As Excel.Workbook = app.Workbooks.Add()
Dim sheet As Excel.Worksheet = book.Sheets(1)
Dim ary As Object(,) = sheet.Range("A1:Z1000").Value
For i As Integer = 1 To 1000
For j As Integer = 1 To 26
ary(i, j) = "R" & i & "C" & j
Next
Next
sheet.Range("A1:Z1000").Value = ary
app.Visible = True
Dim book As Excel.Workbook = app.Workbooks.Add()
Dim sheet As Excel.Worksheet = book.Sheets(1)
Dim ary As Object(,) = sheet.Range("A1:Z1000").Value
For i As Integer = 1 To 1000
For j As Integer = 1 To 26
ary(i, j) = "R" & i & "C" & j
Next
Next
sheet.Range("A1:Z1000").Value = ary
附上C#的程式碼
Excel.Application app = new Excel.Application();
app.Visible = true;
Excel.Workbook book = app.Workbooks.Add(Missing.Value);
Excel.Worksheet sheet = (Excel.Worksheet)(book.Sheets[1]);
object[,] ary = (object[,])(sheet.get_Range("A1:Z1000", Missing.Value).Value2);
for (int i = 1; i <= 1000; i++)
{
for (int j = 1; j <= 26; j++)
{
ary[i, j] = "R" + i.ToString() + "C" + j.ToString();
}
}
sheet.get_Range("A1:Z1000", Missing.Value).Value2 = ary;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25897606/viewspace-712706/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 【Ado.Net】 批量插入資料
- QTableView和QStandardItemModel插入更新資料效能突然變慢QTView
- Excel效能慢?用Smartbi就可以全部搞定!Excel
- mybatis插入資料、批量插入資料MyBatis
- win10系統如何批量壓縮excel 2010插入的圖片Win10Excel
- 使用MySqlBulkLoader批量插入資料MySql
- insert批量插入優化方案優化
- 使用PrepareStatement實現批量插入操作REST
- .NET Core使用NPOI將Excel中的資料批量匯入到MySQLExcelMySql
- excel:如何批量加符號Excel符號
- PHP配上MySQL實現批量更新插入PHPMySql
- Oracle批量插入資料insert all into用法Oracle
- 正規表示式處理批量插入
- MySQL:JDBC批量插入資料的效率MySqlJDBC
- MyBatis Plus 批量資料插入功能,yyds!MyBatis
- db2 sql批量插入一張表插入另一張表DB2SQL
- 【Python】批量提取Excel裡的影像PythonExcel
- 【MyBatis】幾種批量插入效率的比較MyBatis
- 批量插入 1 萬條資料,DB 查詢構造器和原生 SQL 效能比較SQL
- Python批量匯入Excel資料到MySQLPythonExcelMySql
- Laravel- 後臺批量匯入 ExcelLaravelExcel
- MyBatis中批量插入資料,多重forEach迴圈MyBatis
- 使用Mybatis批量插入大量資料的實踐MyBatis
- mysql8.0插入慢之sync_binlog(一)MySql
- python 批量resize效能比較Python
- excel怎麼批量間隔插行 excel表格如何隔行插行Excel
- JDBC 批量插入資料優化, 使用 addBatch 和 executeBatchJDBC優化BAT
- EF批量插入太慢?那是你的姿勢不對
- Excel2007怎麼插入頁首和頁尾?Excel2007插入頁首頁尾的方法步驟Excel
- excel批量篩選重複人名 excel怎麼篩選相同的名字Excel
- 2023版:深度比較幾種.NET Excel匯出庫的效能差異Excel
- Redis效能提高之批量和管道Redis
- Java通過Mybatis實現批量插入資料到Oracle中JavaMyBatisOracle
- Laravel 批量插入(如果資料存在刪除原資料)Laravel
- [Django高階之批量插入資料、分頁器元件]Django元件
- VNPY 批量優化引數,並輸出到excel優化Excel
- eazyexcel 讀取excel資料插入資料庫Excel資料庫
- mysql8.0插入慢的問題解決方案(一)MySql
- Mysql慢查詢日誌檔案轉ExcelMySqlExcel