《介紹一款開源的類Excel試算表軟體》續:七牛雲端儲存實戰(C#)

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   ar   color   os   使用   

兩個月前的發布的部落格《介紹一款開源的類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%以上。此外,鏡像儲存用戶端直傳斷點續上傳雲端富ApsaraVideo for Media Processing等七牛雲端儲存專屬的功能也大大提升了開發效率,最大程度減少了伺服器資源浪費。

 

七牛官方新手上路連結體驗使用者:
      • 儲存空間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

 

小道訊息:目前還有少量七牛雲端儲存的試用優惠券(一個七牛賬戶只能只用一次),有需要請留言溝通。

《介紹一款開源的類Excel試算表軟體》續:七牛雲端儲存實戰(C#)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.