《介绍一款开源的类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-06-25 09:41:48

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

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

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

开源顺顺表格excel电子表格控件免费下载

顺顺表格开源版是基于Web的类似于微软Excel的网页电子表格控件,是一款Javascript电子表格控件.顺顺表格开源版的源代码开放,可以用于Web报表设计器,Web电子表格编辑器,中国特色的电子表单设计器等. 该Web Excel控件可以和Java/Jsp/Asp.Net集成, 实现更强大的电子表格在线编辑功能. 顺顺表格开源版特色 无限制的行和列(增加删除) 电子表格多单元格操作 单元格不同格式(字体,字号等) 统计函数 无限制undo/redo 下载试用 产品 顺顺表格开源版试用版  (

100款开源软件

不知道这些你就OUT了!100款开源软件 好的软件可以极大提高工作效率,完成一些不可能完成工作.然而我们也常常为选择哪款软件而头疼,本次为大家推出的100款软件都是经过整理分类的,而且最重要的是100款软件都是开源免费且使用于Linux环境下,大部分都可以直接从官网上下载使用.如果你完全没有接触过以下我介绍的这100款软件,我只能说一句你OUT了! 图:100款软件分类图 接下来将要介绍的100款开源应用程序,是我花了很多时间为大家整理的,这些软件对大家来说是很有用的.我希望通过这100款软件告

几款开源的中文分词系统

中文分词是做好中文内容检索.文本分析的基础,主要应用于搜索引擎与数据挖掘领域.中文是以词为基本语素单位,而词与词之间并不像英语一样有空格来分隔,因而中文分词的难点在于如何准确而又快速地进行分词 以下介绍4款开源中文分词系统. 1.ICTCLAS – 全球最受欢迎的汉语分词系统 中文词法分析是中文信息处理的基础与关键.中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Le

[转]三维数字地球发布平台探索--几款开源软件介绍

先写想法: 想做个简单的地形漫游,于是考虑在ww直接开发,或找个控件形式的开发组件. 最大的期望有: 1. 支持google的sketchup,快速智能三维建模 2. 设计模式做好点,最好先做成组件形式,然后开发应用程序 3. 性能再好点,对于索引技术,内存管理等等 4. 客户端独立版本 和客户服务器端耦合版本的优化 5. 放点服务器的资料. .net平台 1.WorldWind      知名度很高,介绍也很全.链接在这里NASAWorld Wind     目前分为.net版本和java版本

主流开发语言 33 款开源爬虫

原文地址 去年,之前的同事,喜欢看小说,就想自己没事搞个网站,我告诉他,先用爬虫把别人网站的小说下载下来,放到自己的网站里~我同事编码能力很强,学东西相当快,给他大概讲一下,帮他下载个用 http 协议下载网站的程序集(.net)就可以,但是,时不时,Web 会拒绝,后来,我说,http 协议是应用层协议,频繁访问人家 Web,可能会封你的 IP,你要写爬虫,可以干脆用 TCP/IP 网络层协议写~后来,他写熟了,直接用 TCP/IP 协议写的~ 现在想想,爬虫,这么多开源项目,自己写还真是多余

最受IT公司欢迎的50款开源软件

文章来自:云头条编译 本文介绍了多款知名的开源应用软件,科技公司可以用它们来管理自己的 IT 基础设施.开发产品. 过去十年间,许多科技公司已开始畅怀拥抱开源.许多公司使用开源工具来运行自己的 IT 基础设施和网站,一些提供与开源工具相关的产品和服务,或基于开源工具而建的产品和服务,还有一些在为开源代码贡献代码或支持开源项目. Black Duck 在 2015 年的一项调查发现,78% 的企业组织使用开源软件,这个比例几乎是 2010 年时候的两倍.此外,88% 的企业表示,它们预计在今后几年

【转】推荐介绍几款小巧的Web Server程序

原博地址:http://blog.csdn.net/heiyeshuwu/article/details/1753900 偶然看到几个小巧有趣的Web Server程序,觉得有必要拿来分享一下,让大家除了知道Apache.IIS之外,原来还有更多有趣的选择.主要介绍了:micro_httpd.mini_httpd.thttpd.lighttpd.shttpd 等无款小巧好用的httpd. [ micro_httpd - really small HTTP server] 特点:* 支持安全的 .

十八款开源/商用的Linux服务器控制面板

当站长同时拥有很多网站站点,不通过控制面板管理各种网站就会非常困难.但是为了满足不同需求,我们需要个性化的方案. 网站控制台是完全网页接口可以通过一个网址来管理你各项网络服务的软件.控制台程序可以管理电子邮件账号,FTP账号,文件管理和创建子站,监控磁盘空间和带宽,创建备份等等. 网站控制面板对于Linux新手来讲是个出色的解决方案.可以用来管理虚拟主机或者专用主机上众多的站点.这种站点控制面板可以让网站管理管理变得不需要太多专业知识. 最著名和强大的控制面板是cPanel和 Plesk.这两个