《介绍一款开源的类Excel电子表格软件》续:七牛云存储实战(C#)

两个月前的发布的博客《介绍一款开源的类Excel电子表格软件》引起了热议:在博客园有近2000个View、超过20个评论。 同时有热心读者电话咨询如何能够在SpreadDesing中实现存储Excel云文件,既通过云方式读取、加载Excel文件。在本文,我们就大家关心的云存储进行实战操练---基于SpreadDesign源码基础。

 

系统必备:

  • 本文选用的国内比较流行的七牛云存储。
  • SpreadDesign.exe已经升级为最新的Spread Studio 8.35.20143.0内核
  • .Netframework 4.0
  • Windows 8.1 64系统
  • Visual Studio 2013 社区版

 

要实现的功能列表如下:

 

注册七牛云存储账号(有账号的请跳过本节)

七牛云存储 - 主页 http://www.qiniu.com/ (友情给七牛做个宣传,多谢七牛给葡萄城控件提供的七牛云存储优惠券)

      七牛云存储的核心团队成员来自于盛大、金山、网龙、惠普等知名互联网公司。核心成员之间已合作多年。公司创始人许式伟先生曾在金山、百度和盛大等公司担任重要领导岗位,具有多年存储行业实战经验,被誉为国内最适合做云存储的几人之一。

话说7牛云存储大有来头!区别于国内外其他云存储,七牛自行研发的全分布式架构解决了其他云存储单一数据中心架构可能存在的风险,同时首创双向加速特性对数据上传下载均加速,使得数据访问速度较传统方案平均提升 50%以上。此外,镜像存储客户端直传断点续上传云端富媒体处理等七牛云存储独有的功能也大大提升了开发效率,最大程度减少了服务器资源浪费。

 

七牛官方新手上路链接

体验用户:

      • 储存空间1GB
      • 每月Put请求1万次
      • 每月下载流量1GB
      • 每月Get请求10万次
      • 创建1个空间
      • 仅支持富媒体上传

升级为标准用户:

      • 储存空间10GB
      • 每月Put请求10万次
      • 每月下载流量10GB
      • 每月Get请求100万次
      • 创建20个空间
      • 使用七牛的全部功能

 

7牛云存储需要3个信息就可以使用了。

1,AK(AccessKey)

2,SK(SecretKey)

3,  Bucket

进入账号设置-密钥可以找到如下信息:

 

关于公钥、秘钥的安全问题,请参见官方的《公钥密钥应该放在哪里?

 

配置一个空间(Bucket),如在本文中我使用的是“grapecity”的空间---空间注意大小写要和代码中一致:

 

配置七牛云C#开发环境

七牛开发者中心中,我们可以看到七牛提供了很多SDK:

点击跳转到C# SDK 使用指南的页面。

通过七牛官网提供的URL,下载七牛的C# SDK,以及第三方的开源项目 Json.NET。

同时在GCDN社区,也提供了下载镜像:http://gcdn.gcpowertools.com.cn/showtopic.aspx?topicid=13778&postid=73156#73156 

配置很容易,添加这2个dll引用即可:

Qiniu.DLL

Newtonsoft.Json.dll

 

代码实现

初始化七牛SDK代码

Qiniu.Conf.Config.ACCESS_KEY = "5iujaJ62Q9eQc94uF0sgFzxwVTP-9c_hKq_2jC-j";
Qiniu.Conf.Config.SECRET_KEY = "RMRV45M6J-GpLvz2pAgndn3i-MmTxnDcJMqwsWKG";

private const string Bucket = "grapecity";
private const string Domain = Bucket + ".qiniudn.com";

注:ACCESS_KEY、SECRET_KEY请自行通过七牛后台管理界面申请,每人可申请2对。

 

List文件列表代码

       public void List(ListView listView1, string bucket = Bucket)
        {
            Qiniu.RSF.RSFClient rsf = new Qiniu.RSF.RSFClient(bucket);
            rsf.Prefix = "";
            rsf.Limit = 100;
            List<DumpItem> items;
            while ((items = rsf.Next()) != null)
            {
                foreach (DumpItem item in items)
                {
                    Stat(listView1, item.Key, bucket);
                }
            }
        }

        public void Stat(ListView listView1, string key, string bucket = Bucket)
        {

            RSClient client = new RSClient();
            Entry entry = client.Stat(new EntryPath(bucket, key));
            if (entry.OK)
            {
                ListViewItem item = new ListViewItem(new string[]{key, entry.MimeType,
                    DateTime.FromFileTime(entry.PutTime).ToLongDateString(), entry.Fsize.ToString()});
                listView1.Items.Add(item);
            }
            else
            {
                Console.WriteLine("Failed to Stat");
            }
        }

注:key可使用文件名,中文的文件名也可以。

 

删除文件代码:

      public bool Delete(string key, string bucket = Bucket)
        {
            RSClient client = new RSClient();
            CallRet ret = client.Delete(new EntryPath(bucket, key));
            return ret.OK;
        }

   

下载文件代码

        public string DownLoad(string key1, string domain = Domain)
        {
            string baseUrl = GetPolicy.MakeBaseUrl(domain, key1);
            string private_url = GetPolicy.MakeRequest(baseUrl);
            private_url = HttpUtility.UrlPathEncode(private_url);

            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(private_url);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream stream = response.GetResponseStream();
                string newFile = AppDomain.CurrentDomain.BaseDirectory + key1;
                FileStream write = new FileStream(newFile, FileMode.OpenOrCreate);

                stream.CopyTo(write);

                stream.Close();
                write.Close();

                return newFile;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.Assert(false, ex.Message);
                return "";
            }
        }

 

设计Excel管理UI

 

弹出的“远端管理视图”提供了3个云存储相关的功能:

  • List:获得云端,对应ACCESS_KEY、SECRET_KEY、Bucket下的文件列表
  • Delete::删除云端的文件
  • DownLoad:从云端下载选择的文件,

 

下载云端的文件后,直接传给Spread.OpenExcel,即可在SpreadDesign上进行编辑、打印,非常方便。

 

编辑完成后,点击“存储到云端”,在弹出的对话框中存储为“本地修改后存储的文件.xlsx”,然后程序自动实现存储到云端。

在云内容管理界面,刷新可看到文件被自动上传了:

 

完整源码:

http://git.oschina.net/GrapeCity/SpreadDesigner

 

小道消息:目前还有少量七牛云存储的试用优惠券(一个七牛账户只能只用一次),有需要请留言沟通。

时间: 2024-09-13 11:40:59

《介绍一款开源的类Excel电子表格软件》续:七牛云存储实战(C#)的相关文章

介绍一款开源的类Excel电子表格软件

Excel一直以霸主的地位,占据了Windows桌面表格软件市场No 1,与此同时,Office套装产品几乎成为了IT行业的标配办公技能.有无类似Excel的桌面程序,绿色版,实现基本的数据编辑功能呢? 假如不安装Office,可否实现表格编辑.公式编辑.打印.导入.导出等操作呢? 可以的,本文介绍的这款开源的SpreadDesginer即可实现这样的需求.      谁适合阅读此文? 软件设计师 产品经理 Excel用户 系统必备: .NET Framework 4.0 在管理平台中嵌入Exc

介绍一款数据清理,数据重构软件--TIBCO CLARITY

问题描述 TibcoClarity是tibco公司一款数据清理,重构,整合的工具.它基于Google的OpenRefine开发,加入了多种商业软件(如Salesforce,Maketo)和数据库的整合,添加了地址校验,数据类型校验等功能TIBCOClarity–CloudEditionenablesbusinessuserstodiscover,profile,cleanse,andstandardizerawdatacollatedfromdisparatesourcesandprovideg

几款开源的中文分词系统_相关技巧

以下介绍4款开源中文分词系统. 1.ICTCLAS – 全球最受欢迎的汉语分词系统         中文词法分析是中文信息处理的基础与关键.中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System),主要功能包括中文分词:词性标注:命名实体识别:新词识别:同时支持用户词典:支持繁体中文:支持GBK.UTF-8.UTF-7.UNIC

最新十款开源项目 龙年开门重磅推荐

如今IT时代,开源项目可谓是层出不穷,大力关注开源领域的软件供应商Black Duck Software公司近期第四次评出年度开源软件新秀名单.评选数据来源颇多,通过采用客观公正的评选标准,根据软件的活跃度(即每天该软件做出变更的数量).项目团队规模以及与该软件相关的其它项目数量计算得分并进行排名.本文将为你揭晓最具潜力的十大新秀开源项目.   Bootstrap是由Twitter推出的一款开发软件包,使得Web应用开发与部署尽可能的快速与简单. 正如Twitter架构师马克?奥托(Mark O

4款好用的视频分割软件分享

您正在为找合适好用的视频分割软件而发愁吗?多特小编今天给大家介绍4款好用的视频分割软件,不需要太多复杂的操作,轻轻松松把视频文件分割.   Ultra Video Splitter     推荐度:★★★★★ Ultra Video Splitter 是一款视频分割工具.可将一个巨大的AVI/DivX,MPEG I/II,VOB,DAT,WMV,ASF 文件切割或截断成小的片断.使用内置的播放器,您可以把一部电影分割成AVI/DivX ,MPEG I/II,WMV/ASF格式的小片断.它提供了不

2016阿里巴巴73款开源产品全向图

这是开发者和开源爱好者正在共同书写的峥嵘岁月. 回顾历史,阿里巴巴集团已经开源115个项目,加入FSF基金会.Apache基金会.Linux 基金会和Xen的顾问团队,并在云栖大会北京峰会宣布AliSQL开源. "拥抱开源.回馈开源.融合开源和回报开源"是阿里的开源历程,通过"众创"带来技术上的创新和推动是阿里开源最核心的意义,而阿里的每一项重要开源技术都离不开业内广大开发者的参与和贡献. 受益开源,就当回馈.面对阿里头顶上"贡献开源软件数目第一"

推荐四款开源在线调查工具

现在有各种各样的在线调查工具,比如 SurveyGizmo, Polldaddy, SurveyMonkey 或者是 Google Forms,但如果想要更多的控制权,个性定制收集的数据就有必要用到开源的在线调查工具.以下介绍的 4 款不同类型的开源在线调查工具,简单的.复杂的.适配移动端的都有. LimeSurvey LimeSurvey 拥有一个调查工具必要的所有功能,可以做一些简单的调查和投票,如果想要做更复杂一点的就需要分开多个页面.LimeSurvey 支持 80 种语言,提供 29

十款开源的数据库管理工具

任何Web软件和应用程序都需要强大的数据库来做后盾,目前,网上有无数个数据库管理工具,而开发者选择一款适合自己的尤为重要.本文给开发者介绍了10款免费的数据库管理工具,开发者可以使用它们进行SQL操作.多链接.多数据库引擎操作等等. 1.Open KeyVal Open KeyVal是一款开源免费的键值数据库管理工具,基于Web,并且基于PHP开发,其目标是用最简单的方法来管理Web应用程序数据.用户只需发送一个POST请求就可以存储任何类型的数据,它是以JSON的格式来响应请求的. 2.DBV

Excel电子表格中的行高和列宽怎么设置?

  Excel电子表格中的行高和列宽怎么设置?在平常利用Excel电子表格进行办公中时,制作表格是最基本最常见的事了,但对于初学者来说,该如何设置行高和列宽,有时候甚至是跳行或跳列进行设置.下面小编就为大家详细介绍一下,来看看吧. 步骤 在进行表格制作过程中,进行行高和列宽的调整是必不可少的,一般初学者都会选择直接拉.实际上直接拉野可以,只是有时候不是很规范. 选中要设置的行,在标题栏"5"上点击右键即会弹出工具栏,点击"行高"进入. 在"行高"