程序化导入导出EXCEL数据,完全由模板输出
2012-03-31 17:44
495 查看
话说,上次做了个自动化导入导出EXCEL数据程序,用的很是Happy.
但,实在是没想到脖子离职,一下子市场部所有的数据都压在了我一个人身上。
还是要花少量时间来COPY /PASTE,每天都觉得事情做不完。
无奈啊,作为一个懒惰的人,不得不再想办法,简化工作。
于是有了这次的大更新。
这次采用ASPOSE.CELLS来完成数据的导出,GEMBOX的模板功能太弱了,动不动无法导入模板。
虽然是采用了ASPOSE来完成,但自己也要动手来改一下它的数据导入到excel函数,改成使用自己写的,不然真的很崩溃,格式完全让我无语。
言归正传,将主要用到的方法写下来。
?
改用自己编写的填充方法,主要是因为ASPOSE的格式存在问题,如果你多次对一个表进行操作的话。
复制代码
复制代码
好了,差不多了,这样只要加载了数据,就可以填充到自己需要的模板中了。
哈哈,又可以HAPPY的轻松的应对工作了。
近期准备对用到EXCEL导入导出功能的一些控件作个总结,大概有EXCELLIBRAY,MYXLS,NPOI,GEMBOX,ASPOSE这几个主流的控件或者库。
整理一下这些东东的优缺点,也作为一个归档。
但,实在是没想到脖子离职,一下子市场部所有的数据都压在了我一个人身上。
还是要花少量时间来COPY /PASTE,每天都觉得事情做不完。
无奈啊,作为一个懒惰的人,不得不再想办法,简化工作。
于是有了这次的大更新。
这次采用ASPOSE.CELLS来完成数据的导出,GEMBOX的模板功能太弱了,动不动无法导入模板。
虽然是采用了ASPOSE来完成,但自己也要动手来改一下它的数据导入到excel函数,改成使用自己写的,不然真的很崩溃,格式完全让我无语。
言归正传,将主要用到的方法写下来。
?
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这几个主流的控件或者库。
整理一下这些东东的优缺点,也作为一个归档。
相关文章推荐
- 程序化导入导出EXCEL数据,完全由模板输出
- C# 实现Excel导出 加载模板 导入数据到模板
- 使用phpExcel实现Excel数据的导入导出(完全步骤)
- C#实现Excel模板导出和从Excel导入数据
- 使用phpExcel实现Excel数据的导入导出(完全步骤)
- ThinkPHP使用phpExcel实现Excel数据的导入导出(真正的完全步骤)
- C#导出数据到Excel模板and如何画Excel模板并导出数据,导入excel数据
- 使用phpExcel实现Excel数据的导入导出(完全步骤)
- 使用phpExcel实现Excel数据的导入导出(完全步骤)
- JAVA使用poi进行EXCEL模板导入导出,XSSFCell数据类型
- sqldeveloper中Excel数据的导入与导出
- 下载模板、Excel导入、导出
- C#变成数据导入Excel和导出Excel
- laravel框架实现excel表格数据导入导出-php
- C#导入导出Excel表的数据
- 使用PHP导入Excel和导出数据为Excel文件
- PHP将Excel导入数据库及数据库数据导出至Excel的方法 亲测
- sql server 2005导入导出数据完全步骤
- 怎样将Datatable中的数据直接导入到Excel模板上
- thinkphp实现excel数据的导入导出