将一个Excel文件分隔成多个
生活随笔
收集整理的這篇文章主要介紹了
将一个Excel文件分隔成多个
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由于項目的需要,將一個有數十萬數據的Excel文件導入到數據庫,直接導入的話太慢了,然后就考慮寫一個分隔程序,多個文件同時導入。
下面就看看是怎么弄的:
1.將你的Excel文件讀入到一個DataTable中,引用了Aspose.Cells.dll,這里就不提供下載了,需要的話請去找度娘^_^:
//讀取獲得數據private static DataTable GetExcelTablenew(string uploadPath){DataSet ds = new DataSet();Workbook workbook = new Workbook();workbook.Open(uploadPath);Names NameList = workbook.Worksheets.Names;Worksheet wsts = workbook.Worksheets[0];if (wsts.Cells.Count > 0){int MaxR = wsts.Cells.MaxRow;int MaxC = wsts.Cells.MaxColumn;if (MaxR > 0 && MaxC > 0){DataTable dt = wsts.Cells.ExportDataTableAsString(0, 0, MaxR + 1, MaxC + 1, true);ds.Tables.Add(dt);}}if (ds.Tables.Count < 1){return new DataTable();}return ds.Tables[0];} View Code2.我們獲得了一個Table,下面就開始分隔了哦(代碼為直接拿出來的 一些地方就沒有修改見諒):
1 /// <summary> 2 /// 分解數據表 3 /// </summary> 4 /// <param name="originalTab">需要分解的表</param> 5 /// <param name="rowsNum">每個表包含的數據量</param> 6 /// <returns></returns> 7 public static string[] SplitDataTable(DataTable originalTab, int rowsNum,string filePath) 8 { 9 Console.WriteLine("分隔真的要開始咯"); 10 string[] ListName=new string[10]; 11 //獲取所需創建的表數量 12 int tableNum = originalTab.Rows.Count / rowsNum; 13 14 //獲取數據余數 15 int remainder = originalTab.Rows.Count % rowsNum; 16 17 DataSet ds = new DataSet(); 18 19 //如果只需要創建1個表,直接將原始表存入DataSet 20 if (tableNum == 0) 21 { 22 ds.Tables.Add(originalTab); 23 } 24 else 25 { 26 DataTable[] tableSlice = new DataTable[tableNum]; 27 28 //Save orginal columns into new table. 29 for (int c = 0; c < tableNum; c++) 30 { 31 tableSlice[c] = new DataTable(); 32 foreach (DataColumn dc in originalTab.Columns) 33 { 34 tableSlice[c].Columns.Add(dc.ColumnName, dc.DataType); 35 } 36 } 37 //Import Rows 38 for (int i = 0; i < tableNum; i++) 39 { 40 // if the current table is not the last one 41 if (i != tableNum - 1) 42 { 43 for (int j = i * rowsNum; j < ((i + 1) * rowsNum); j++) 44 { 45 tableSlice[i].ImportRow(originalTab.Rows[j]); 46 } 47 } 48 else 49 { 50 for (int k = i * rowsNum; k < ((i + 1) * rowsNum + remainder); k++) 51 { 52 tableSlice[i].ImportRow(originalTab.Rows[k]); 53 } 54 } 55 } 56 57 for (int i = 0; i < tableSlice.Length; i++) { 58 Console.WriteLine("進行寫入文件咯"); 59 ListName[i] = TableTntoCsv(tableSlice[i], filePath, i); 60 } 61 } 62 63 return ListName; 64 65 } View Code?3.來個圖看看分隔的文件:
4.好了,就這樣,下篇再見!
?
轉載于:https://www.cnblogs.com/ypyhy/p/4533717.html
總結
以上是生活随笔為你收集整理的将一个Excel文件分隔成多个的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 框架是什么?MVC是什么 ?工厂模
- 下一篇: 手机数据抓包以及wireshark技巧