Aspose.cells异步读写操作

  1 public class AsyncExcel : Excel
  2     {
  3         static readonly object _objForlock = new object();
  4         //public List<IAsyncResult> ReadAsyncResults
  5         //{
  6         //    get;
  7         //    set;
  8         //}
  9
 10         //public List<IAsyncResult> WriteAsyncResults
 11         //{
 12         //    get;
 13         //    set;
 14         //}
 15         public override void Read()
 16         {
 17             if (string.IsNullOrEmpty(this.Path) || !System.IO.File.Exists(this.Path))
 18             {
 19                 throw new Exception(string.Format("文件“{0}”为空或不存在。", this.Path));
 20             }
 21             //ReadAsyncResults = new List<IAsyncResult>();
 22             Workbook wb = new Workbook();
 23             wb.Open(this.Path);
 24             MemoryDataTables = new System.Data.DataTable[wb.Worksheets.Count];
 25             object[] rowArrData;
 26             for (var i = 0; i < wb.Worksheets.Count; i++)
 27             {
 28                 MemoryDataTables[i] = new System.Data.DataTable();
 29                 MemoryDataTables[i].TableName = wb.Worksheets[i].Name;
 30                 for (var j = 0; j < wb.Worksheets[i].Cells.MaxColumn; j++)
 31                 {
 32                     //row = MemoryDataTables[i].NewRow();
 33                     //MemoryDataTables[i].Rows.Add(row);
 34                     rowArrData = new object[wb.Worksheets[i].Cells.MaxColumn];
 35                     for (var k = 0; k < wb.Worksheets[i].Cells.MaxColumn; k++)
 36                     {
 37                         rowArrData[k] = wb.Worksheets[i].Cells[j, k].Value;
 38                         if (CellAction != null)
 39                         {
 40                             CellAction.BeginInvoke(rowArrData[k], null, null);
 41                         }
 42                     }
 43                     if (RowAction != null)
 44                     {
 45                         RowAction.BeginInvoke(rowArrData, null, null);
 46                     }
 47                     if (DataTableRowOpAction != null)
 48                     {
 49                         DataTableRowOpAction.BeginInvoke(rowArrData, null, null);
 50                     }
 51
 52                 }
 53                 if (DataTableAction != null)
 54                 {
 55                     DataTableAction.BeginInvoke(MemoryDataTables[i], null, null);
 56                 }
 57             }
 58             wb = null;
 59         }
 60
 61
 62         public override void Write()
 63         {
 64             if (string.IsNullOrEmpty(this.Path))
 65             {
 66                 throw new Exception(string.Format("保存路径“{0}”为空。", this.Path));
 67             }
 68             if (MemoryDataTables == null || MemoryDataTables.Length <= 0)
 69             {
 70                 throw new Exception("没有数据写入。");
 71             }
 72             //WriteAsyncResults = new List<IAsyncResult>();
 73             Workbook wb = new Workbook();
 74             for (var i = 0; i < MemoryDataTables.Length; i++)
 75             {
 76                 wb.Worksheets.Add(MemoryDataTables[i].TableName);
 77                 wb.Worksheets[i].Cells.ImportDataRow(MemoryDataTables[i].Rows[0], 0, wb.Worksheets[i].Cells.MinColumn);
 78                 for (var j = 0; j < MemoryDataTables[i].Rows.Count; j++)
 79                 {
 80                     for (var k = 0; k < MemoryDataTables[i].Columns.Count; k++)
 81                     {
 82                         wb.Worksheets[i].Cells[j + 1, k].PutValue(MemoryDataTables[i].Rows[j][k]);
 83                         if (CellAction != null)
 84                         {
 85                             CellAction.BeginInvoke(wb.Worksheets[i].Cells[j + 1, k], null, null);
 86                         }
 87                     }
 88                     if (RowAction != null)
 89                     {
 90                         RowAction.BeginInvoke(MemoryDataTables[i].Rows[j].ItemArray, null, null);
 91                     }
 92                     if (DataTableRowOpAction != null)
 93                     {
 94                         DataTableRowOpAction.BeginInvoke(MemoryDataTables[i].Rows[j].ItemArray, null, null);
 95                     }
 96                 }
 97                 if (DataTableAction != null)
 98                 {
 99                     DataTableAction.BeginInvoke(MemoryDataTables[i], null, null);
100                 }
101             }
102             if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(this.Path)))
103             {
104                 System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(this.Path));
105             }
106             wb.Save(System.IO.Path.GetFullPath(this.Path));
107         }
108
109
110         public Action<object[]> RowAction
111         {
112             get;
113             set;
114         }
115
116         /// <summary>
117         /// 异步不会自动添加DataRow到DataTable,如果需要异步执行的最后结果,请在这个Action把Row添加到DataTable
118         /// </summary>
119         public Action<object[]> DataTableRowOpAction
120         {
121             get;
122             set;
123         }
124
125         public Action<object> CellAction
126         {
127             get;
128             set;
129         }
130
131         public Action<System.Data.DataTable> DataTableAction
132         {
133             get;
134             set;
135         }
136     }
时间: 2025-01-05 17:39:03

Aspose.cells异步读写操作的相关文章

报表中的Excel操作之Aspose.Cells(Excel模板)

本文转载:http://www.cnblogs.com/whitewolf/archive/2011/03/21/Aspose_Cells_Template1.html 报表中的Excel操作之Aspose.Cells(Excel模板)

Aspose.Cells 操作Excel相关文章

Aspose.Cells 根据Excel模板导出数据统计 使用Aspose.Cell控件实现Excel高难度报表的生成(一)

Aspose.Cells导入导出

插件:Aspose.Cells 没有安装office插件也能使用: 导出:不能使用ajax异步· /// <summary> /// 导出试题 /// </summary> /// <param name="userId">用户Id</param> /// <param name="courseId">课程Id</param> /// <returns></returns>

006 异步IO操作

# 异步IO操作 CreateFile 使用 VS2015 新建win32 控制台应用程序 WindowsFileDemo win32控制台写窗口程序 需要加入头文件 #include <fileAPI.h> 就可以来使用CreateFile 分别有 CreateFileA  CreateFileW 窄字节 宽字节 1 HANDLE WINAPI CreateFile( 2 _In_ LPCTSTR lpFileName, 3 _In_ DWORD dwDesiredAccess, 4 _In

boost asio异步读写网络聊天程序客户端 实例详解

// // chat_client.cpp // ~~~~~~~~~~~~~~~ // // Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://ww

利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能

我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序 HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据,难免会含有方便操作的 主键ID这列的记录.现在项目需要在easyUI的DataGrid中显示的数据能全部导出Excel,包括DataGrid中的中文标题,其他的统统不 要. 完成该功能所需的工具和环境:Newtonsoft.Json序列化和反序列化类库.easyUI前端UI框架.HttpHandl

使用Aspose插件对Excel操作

使用使用Aspose插件对Excel文档进行导入导出操作 Excel导入: 前台使用file标签获取,submit方式提交. <form id="form1" enctype="multipart/form-data" method="post" > <table class="table-condensed"> <tr> <td class="text-right"

aspose.cells根据模板导出excel

又隔十多天没写博客了,最近都在忙项目的事情,公司人事变动也比较大,手头上就又多了一个项目.最近做用aspose.cells根据模板导出excel报价单的功能,顺便把相关的核心记下来,先上模板和导出的效果图吧,如下: 导出效果图(看到产品图,打不死的程(diao)序(si)员(猿)骚动吧,有没有不禁看了看自己粗大的右手): (其中红色框框起来的是动态填充的内容,工作薄名(产品信息)也是动态输出的) 模板如下: 大概流程是这样,先把需要输出到excel的内容存到一个model里面,然后把该model

Aspose Cells 添加数据验证(动态下拉列表验证)

参考 :http://www.componentcn.com/kongjianjishu/kongjianjishu/2015-06-04/2781.html Aspose Cells是一款操作和处理以及转换Excel文件的类库,支持.NET和JAVA版,几乎所有Excel能实现的功能,Aspose Cells都可以实现,Microsoft Excel支持多种不同类型的数据验证,每一种类型用于控制数据输入或者单元格范围,比如经常用到的:整数验证.小数位数验证.值范围验证.时间验证.文本字符长度验