话说,上次做了个自动化导入导出EXCEL数据程序,用的很是Happy.

但,实在是没想到脖子离职,一下子市场部所有的数据都压在了我一个人身上。

还是要花少量时间来COPY /PASTE,每天都觉得事情做不完。

无奈啊,作为一个懒惰的人,不得不再想办法,简化工作。

于是有了这次的大更新。

这次采用ASPOSE.CELLS来完成数据的导出,GEMBOX的模板功能太弱了,动不动无法导入模板。

虽然是采用了ASPOSE来完成,但自己也要动手来改一下它的数据导入到excel函数,改成使用自己写的,不然真的很崩溃,格式完全让我无语。

言归正传,将主要用到的方法写下来。

 Aspose.Cells.Workbook mybook = new Aspose.Cells.Workbook();//实例化
mybook.Open(Application.StartupPath + "/Template/" + myTask.TaskTemplate);//加载模板Aspose.Cells.Worksheet ws2 = mybook.Worksheets[myTask.SheetArea[i].name];//获取sheetInsertData_ASPOSE(ws2, myTask.SheetArea[i]);//填充sheet
mybook.Save(textBox1.Text.ToString() + "/ASPOSE_" + myTask.TaskName + dateTimePicker1.Value.ToString("yyyyMMdd") + ".xls");//保存数据

改用自己编写的填充方法,主要是因为ASPOSE的格式存在问题,如果你多次对一个表进行操作的话。

private void InsertData_ASPOSE(Aspose.Cells.Worksheet ws, Moops.Info.Configuration.configurationTaskInfoSheetArea DataArea)
{
try
{

for (int i = 0; i < DataArea.DataArea.Length; i++)
{
string key = DataArea.DataArea[i].datatype;
DataTable dt = ds1.Tables[0];
//DataTable dt = ds1.Tables[0].DefaultView.ToTable(false, DataArea.DataArea[i].data_column_name.Split(','));
DataTable dt_out = dt.Clone();
//DataRow aDataRow = dtItemPrice.NewRow();

//aDataRow.ItemArray = drItemPrices[i].ItemArray;

//dtItemPrice.Rows.Add(aDataRow);

DataRow[] myrows = dt.Select(myTask.DataType + "='" + key + "'");
foreach (DataRow row in myrows)
{
dt_out.ImportRow(row);
}
DataTable dt_result = dt_out.DefaultView.ToTable(false, DataArea.DataArea[i].data_column_name.Split(','));
string[] columnname = DataArea.DataArea[i].column_name.Split(',');
int s = columnname.Length - 1;
for (int j = dt_result.Columns.Count - 1; j >= 0; j--)
{
if (s >= 0)
{
dt_result.Columns[j].ColumnName = columnname[s].ToString();
s--;
}
else
{
break;
}
}
//int firstColumn = 0;
//firstColumn =((int)(Convert.ToChar(DataArea.DataArea[i].start_column.Substring(0, 1)))-(int)('A'));
//ws.Cells[DataArea.DataArea[i].start_column].PutValue(0);
//ws.ActiveCell = DataArea.DataArea[i].start_column;
//Aspose.Cells.Cell mycell = ws.Cells[DataArea.DataArea[i].start_column];
//mycell.PutValue(0);
//ws.ActiveCell = DataArea.DataArea[i].start_column;
InsertDataTableWithAspose(ws.Cells, dt_result, 0, GetColumnIndex(DataArea.DataArea[i].start_column) , true);
//int sx = ws.Cells.ImportDataTable(dt_result, true,DataArea.DataArea[i].start_column);
//ws.AutoFitColumns();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private int InsertDataTableWithAspose(Aspose.Cells.Cells Cells, DataTable dataTable, int startRow, int startColumn, bool columnHeaders)
{
int num2;
int num3 = 0;
if (columnHeaders)
{
num2 = 0;
do
{
Cells[startRow, startColumn + num2].PutValue( dataTable.Columns[num2].ColumnName);
num2++;
}
while (num2 < dataTable.Columns.Count);
num3++;
}
int num = 0;
if (dataTable.Rows.Count > 0)
{
do
{
num2 = 0;
do
{
Cells[startRow + num3 + num, startColumn + num2].PutValue(dataTable.Rows[num][num2]);
num2++;
}
while (num2 < dataTable.Columns.Count);
num++;
}
while (num < dataTable.Rows.Count);
}
return (num + num3);
}

好了,差不多了,这样只要加载了数据,就可以填充到自己需要的模板中了。

哈哈,又可以HAPPY的轻松的应对工作了。

近期准备对用到EXCEL导入导出功能的一些控件作个总结,大概有EXCELLIBRAY,MYXLS,NPOI,GEMBOX,ASPOSE这几个主流的控件或者库。

整理一下这些东东的优缺点,也作为一个归档。

转载于:https://www.cnblogs.com/massinger/archive/2011/05/16/2047464.html

程序化导入导出EXCEL数据,完全由模板输出相关推荐

  1. toad导入数据_Oracle 使用TOAD实现导入导出Excel数据

    在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的.Quest Software为此提供了高效的Orac ...

  2. java 导入excel工具类_java Excel工具类,导入导出Excel数据

    java Excel工具类,导入导出Excel数据,导入数据对合并表格有判断获取数据: 导出数据到Excel,Excel文件不存在会创建. 使用的是poi处理,兼容Excel. 对反射不够理解,目前先 ...

  3. java excel data 导入数据_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

  4. java 动态导入excel_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

  5. python导入excel数据-Python数据处理之导入导出excel数据

    欢迎点击上方"AntDream"关注我 .Python的一大应用就是数据分析了,而数据分析中,经常碰到需要处理Excel数据的情况.这里做一个Python处理Excel数据的总结, ...

  6. POI导入导出Excel数据(IDEA版)简单运用

    一.POI Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能,简单来说就是能在Java程序中导入导出W ...

  7. toad mysql导入excel_Oracle 使用TOAD实现导入导出Excel数据

    在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的.Quest Software为此提供了高效的Orac ...

  8. 用toad实现oracle数据迁移,Oracle 使用TOAD实现导入导出Excel数据

    在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的.Quest Software为此提供了高效的Orac ...

  9. 导Excel数据到Oracle的脚本,Oracle使用TOAD实现导入导出Excel数据

    在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的.Quest Software为此提供了高效的Orac ...

  10. Struts2 POI 导入导出Excel数据

    页面端: <html> <head> <title>导入数据</title> </head> <body> <h1> ...

最新文章

  1. [Android学习笔记]理解焦点处理原理的相关记录
  2. 墨迹天气语音包_小米有品“智能AI翻译机”评测,还内置了语音助手,随身WiFi功能...
  3. 计算机考研英语词汇书,求助:有知道电脑背考研英语单词的
  4. Mysql 引擎 表还是库_mysql 库、表、引擎
  5. React Native 轻松集成统计功能(iOS 篇)
  6. gradle脚本源码查看环境搭建
  7. ubuntu18.04 init setting
  8. 网页预览时,仿宋_GB2312 字体不能正确显示,uni-app移动端字体不显示
  9. 微信公众号网页开发步骤
  10. Spring boot微服务项目中上传图片报错,The field file exceeds its maximum permitted size of 1048576 bytes.
  11. vue优化技巧之mixins
  12. freebase api的使用
  13. 一文搞懂如何兼容苹果HomeKit?智汀助你轻松打造智慧家庭
  14. RIFT Multi-Modal Image Matching Based on Radiation-Variation Insensitive Feature Transform
  15. win10系统安装Docker详解
  16. ThinkPHP门面源码解析
  17. 月均播放超2.8亿,vlog会是品牌B站推广新风口吗?
  18. 什么是 Substrate
  19. 计算机网络实验路由器配置
  20. MT6765 PCB设计资料,MT6765芯片参考资料

热门文章

  1. 建模算法(五)——图与网络
  2. 新手android中ListView实现音乐列表
  3. 跨应用的访问 contentprovider
  4. iOS Crash类别总结
  5. oracle HWM
  6. 域猫(域名分享平台)
  7. 一些and知识 和ui
  8. matplotlib库使用
  9. linux内存基础知识和相关调优方案
  10. 首份《敏捷回顾年度报告》发布