将一个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 Code
2.我们获得了一个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文件分隔成多个相关推荐
- stata中超好用小命令:一键将excel文件转换成dta文件
xls2dta命令:将excel文件转换成dta文件 在stata应用中,往往需要对多个excel中的数据进行处理,这就需将excel格式的数据转化为stata格式的数据,通常的做法是读入(impor ...
- python处理多个excel文件-python多个excel文件合并成一个sheet
运营人员需要历年的订单数据,这就需要把多个文件夹下面的excel文件合并到一个sheet中,之前的解决的办法是用VBA把多个excel文件合并成一个表的多个sheet,再把多个sheet合并成一个sh ...
- kettle将多个文件压缩_如何使用WinRAR将一个大文件压缩成多个小的压缩包
目录 1.使用WinRAR将一个大文件压缩成多个小的压缩包 2.使用WinRAR将多个小的压缩包,解压/合并成一个大文件 3.结尾 / 在现实生活中,受文件大小的限制,在传输的过程往往出现困难,如:邮 ...
- java poi 如何合并多个sheet 为一个sheet_Java POI组件实现多个Excel文件整合成一个多Sheet的Excel文件...
代码: package com.weichai; import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...
- c语言 拆分 文件,linux 将一个大文件分割成小的碎片文件 命令:csplit
csplit命令用于将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件.碎片文件的命名类似"xx00","xx01".csplit命令是split ...
- 如何使用WinRAR将一个大文件压缩成多个小的压缩包
目录 1.使用WinRAR将一个大文件压缩成多个小的压缩包 2.使用WinRAR将多个小的压缩包,解压/合并成一个大文件 3.结尾 推荐阅读(单击下方即可跳转): 如何使用7-Zip将一个大文件压缩成 ...
- Java实现从Excel文件转换成XML文件(一)
实现思路: 直接从Excel文件装换成XML文件是可以实现的,这里我采用一个中间装换,也就是先实现excel文件内容放入实现设计好的access数据库文件中,然后再从access中读取 ...
- matlab visa转c,将一个m文件转成c /cpp文件并在VC中进行编译。这种方法有个烦人的地方,每次你都需要把matla...
将一个m文件转成c /cpp文件并在VC中进行编译.这种方法有个烦人的地方,每次你都需要把matla 2016-08-23 1 0 0 暂无评分 其他 1 积分下载 如何获取积分? 将一个m文件转成c ...
- java将excel文件转换成txt格式文件
在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件.下面代码里面提供对xls.xlsx两种格式的excel文件解析,并写入到一个新的txt文 ...
最新文章
- strcpy和strcmp——调用库函数快速操作字符数组
- 阿里云Lindorm联合智臾科技发布,金融高频交易数据量化分析与处理方案
- python从基础到入门电子书_零基础如何学好python?一本python从入门到实践电子书籍赠送...
- zoj 3511 Cake Robbery(线段树)
- mysql 表名是变量_MySQL深层次的总结
- java游戏抽卡_怎么处理游戏中抽卡概率算法,每个卡有数量限制,抽完概率也会变。...
- C++内存日志系统(一)
- PHP源码分析-hex2bin函数源码分析
- 南邮80c51汇编语言编程实验,实验三 查表 多分支(80C51单片机汇编语言编程)
- 安达智能通过注册:拟募资11.7亿 刘飞与何玉姣夫妇为大专学历
- 关于HTTP的几个个人预言
- 手工电动木偶,3D模型。
- 100个冷笑话,越往后越冷(郁闷时专用……)
- 小学计算机打字基础知识教案绿色圃,小学信息技术公开课教案智能ABC输入法教学设计与反思...
- 论文阅读_Robust Counterfactual Explanations on Graph Neural Networks
- JAVA实现简单的文本文件(java的组件和事件处理)
- 公交车摄像头“偷拍走光”? 女乘客司机起纠纷
- office2019 图目录_中世纪最壮观挂毯(法国昂热城堡珍藏):圣经启示录【连载目录】...
- 无线移动通信中的多普勒效应及其消除方法
- 计算机变成游戏,把旧电脑变成云电脑?让手机运行大型PC游戏