.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的批量插入
- 使用 【Ado.Net】 批量插入資料
- Excel效能慢?用Smartbi就可以全部搞定!Excel
- mybatis插入資料、批量插入資料MyBatis
- oracle批量插入資料Oracle
- MyBatis 批量插入資料MyBatis
- Mybatis批量插入Oracle、MySQLMyBatisOracleMySql
- MongoDB不支援批量插入MongoDB
- win10系統如何批量壓縮excel 2010插入的圖片Win10Excel
- insert批量插入優化方案優化
- 使用PrepareStatement實現批量插入操作REST
- 使用MySqlBulkLoader批量插入資料MySql
- hibernateHQl批量插入、刪除、更新
- 大表資料插入批量提交
- 海量資料處理_批量插入
- SQL語句批量插入資料SQL
- SqlBulkCopy 複製批量插入資料SQL
- excel:如何批量加符號Excel符號
- PHP配上MySQL實現批量更新插入PHPMySql
- MySQL:JDBC批量插入資料的效率MySqlJDBC
- MyBatis Plus 批量資料插入功能,yyds!MyBatis
- 正規表示式處理批量插入
- .NET Core使用NPOI將Excel中的資料批量匯入到MySQLExcelMySql
- 把EXCEL表格插入到PPT中Excel
- db2 sql批量插入一張表插入另一張表DB2SQL
- 【MyBatis】幾種批量插入效率的比較MyBatis
- Oracle批量插入資料insert all into用法Oracle
- Redis從檔案中批量插入資料Redis
- MSSQL資料批量插入優化詳細SQL優化
- 向表中插入大批量資料
- 批量插入資料的儲存過程儲存過程
- 批量插入 1 萬條資料,DB 查詢構造器和原生 SQL 效能比較SQL
- ibatis對oracle資料庫的批量更新和批量插入的操作BATOracle資料庫
- 批量更新效能比較
- 批量載入效能案例
- 在Excel表格中插入Word文件方法Excel
- 【Python】批量提取Excel裡的影像PythonExcel