WILLIAM
2012 - 11 - 29
由於大家在匯出EXCEL的時候幾乎還是都在用2003,常常會被筆數限制,如果大於65535就要使用sheet來做分頁。
所以研究了一下用EXCEL2007做匯出EXCEL的功能。不過EXCEL2007最多還是只有100萬筆。
改用新版本的 Excel 2007(*.xlsx) 也可以改善這些問題,舉例來說:
可支援到 1,048,576 筆資料列。
可支援到 16,384 資料行。
Excel 2007 讓試算表的容量擴充到超過 1 百萬資料列和 1 萬 6 千資料行。
匯出EXCEL的套件有二種NPOI vs. EPPlus
NPOI:使用於(Excel2003及之前的版本),可寫出Excel2003(xls),可讀Excel2003 (xls)/ Excel2007(xlsx)
EPPlus:EPPlus is a .net library that reads and writes Excel 2007/2010 files using the Open Office Xml format (xlsx).
參考別人做的測試在匯出的測試
使用NPOI產出65535筆資料花費41 sec。 使用EPPlus產出65999筆花費2 sec。
加上資料如果超過65535筆會造成困擾,需要做分頁等等,所以可參考使用EPPLUS這套件。但如果使用者手上只有2003,那當然還是乖乖用NPOI這套囉。
另外還有一種是使用XML格式將EXCEL匯出,這種方式比較萬用。
這種方式我們可以先將一份EXCEL,匯出成XML的資料格式,然後參照他的格式就可以自行編寫EXCEL了,好處是不用使用其他元件。
使用方式
EPPlus
//讀值
Value = sheet.Cells[i, 1].Value.ToString();
//寫值
sheet.Cells[i, 1].Value = Value;
NPOI
// 插入資料值。
sheet.CreateRow(0).CreateCell(0).SetCellValue(0);
XML
//插入資料值
@<Cell><Data ss:Type=String>測試</Data></Cell>
上述三種方式相比較的話,是EPPlus較簡易好操作。
26781