由于项目的需要,将一个有数十万数据的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文件分隔成多个相关推荐

  1. stata中超好用小命令:一键将excel文件转换成dta文件

    xls2dta命令:将excel文件转换成dta文件 在stata应用中,往往需要对多个excel中的数据进行处理,这就需将excel格式的数据转化为stata格式的数据,通常的做法是读入(impor ...

  2. python处理多个excel文件-python多个excel文件合并成一个sheet

    运营人员需要历年的订单数据,这就需要把多个文件夹下面的excel文件合并到一个sheet中,之前的解决的办法是用VBA把多个excel文件合并成一个表的多个sheet,再把多个sheet合并成一个sh ...

  3. kettle将多个文件压缩_如何使用WinRAR将一个大文件压缩成多个小的压缩包

    目录 1.使用WinRAR将一个大文件压缩成多个小的压缩包 2.使用WinRAR将多个小的压缩包,解压/合并成一个大文件 3.结尾 / 在现实生活中,受文件大小的限制,在传输的过程往往出现困难,如:邮 ...

  4. java poi 如何合并多个sheet 为一个sheet_Java POI组件实现多个Excel文件整合成一个多Sheet的Excel文件...

    代码: package com.weichai; import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...

  5. c语言 拆分 文件,linux 将一个大文件分割成小的碎片文件 命令:csplit

    csplit命令用于将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件.碎片文件的命名类似"xx00","xx01".csplit命令是split ...

  6. 如何使用WinRAR将一个大文件压缩成多个小的压缩包

    目录 1.使用WinRAR将一个大文件压缩成多个小的压缩包 2.使用WinRAR将多个小的压缩包,解压/合并成一个大文件 3.结尾 推荐阅读(单击下方即可跳转): 如何使用7-Zip将一个大文件压缩成 ...

  7. Java实现从Excel文件转换成XML文件(一)

    实现思路:         直接从Excel文件装换成XML文件是可以实现的,这里我采用一个中间装换,也就是先实现excel文件内容放入实现设计好的access数据库文件中,然后再从access中读取 ...

  8. matlab visa转c,将一个m文件转成c /cpp文件并在VC中进行编译。这种方法有个烦人的地方,每次你都需要把matla...

    将一个m文件转成c /cpp文件并在VC中进行编译.这种方法有个烦人的地方,每次你都需要把matla 2016-08-23 1 0 0 暂无评分 其他 1 积分下载 如何获取积分? 将一个m文件转成c ...

  9. java将excel文件转换成txt格式文件

    在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件.下面代码里面提供对xls.xlsx两种格式的excel文件解析,并写入到一个新的txt文 ...

最新文章

  1. strcpy和strcmp——调用库函数快速操作字符数组
  2. 阿里云Lindorm联合智臾科技发布,金融高频交易数据量化分析与处理方案
  3. python从基础到入门电子书_零基础如何学好python?一本python从入门到实践电子书籍赠送...
  4. zoj 3511 Cake Robbery(线段树)
  5. mysql 表名是变量_MySQL深层次的总结
  6. java游戏抽卡_怎么处理游戏中抽卡概率算法,每个卡有数量限制,抽完概率也会变。...
  7. C++内存日志系统(一)
  8. PHP源码分析-hex2bin函数源码分析
  9. 南邮80c51汇编语言编程实验,实验三 查表 多分支(80C51单片机汇编语言编程)
  10. 安达智能通过注册:拟募资11.7亿 刘飞与何玉姣夫妇为大专学历
  11. 关于HTTP的几个个人预言
  12. 手工电动木偶,3D模型。
  13. 100个冷笑话,越往后越冷(郁闷时专用……)
  14. 小学计算机打字基础知识教案绿色圃,小学信息技术公开课教案智能ABC输入法教学设计与反思...
  15. 论文阅读_Robust Counterfactual Explanations on Graph Neural Networks
  16. JAVA实现简单的文本文件(java的组件和事件处理)
  17. 公交车摄像头“偷拍走光”? 女乘客司机起纠纷
  18. office2019 图目录_中世纪最壮观挂毯(法国昂热城堡珍藏):圣经启示录【连载目录】...
  19. 无线移动通信中的多普勒效应及其消除方法
  20. 计算机变成游戏,把旧电脑变成云电脑?让手机运行大型PC游戏

热门文章

  1. ResultSet用法集锦 (转)
  2. python脚本自动发邮件功能
  3. 使用objectdatasource结合数据绑定控件进行简单三层架构的开发
  4. Linux之 proc文件系统
  5. jQuery单选按钮监听事件
  6. hdu 6148 数位dp
  7. 关于 Bootstrap的知识
  8. 让小乌龟可以唱歌——对Python turtle进行拓展
  9. 【Mysql 学习路线图】
  10. codeforces 435 B. Pasha Maximizes 解题报告