1. 程式人生 > >Mongodb儲存讀取Word文件

Mongodb儲存讀取Word文件

      在為人事系統做操作日誌功能時,為了保證已經列印的信函可以還原,需要在每次列印信函時記錄Word信函的內容。

  SQL Server只能記錄信函的文字內容,那信函的頁面佈局、字型格式等其他內容如何儲存呢?此時Mongodb閃亮登場,由於MongoDB的文件結構為BJSON格式(BJSON全稱:Binary JSON),而BJSON格式本身就支援儲存二進位制格式的資料,因此可以把檔案的二進位制格式的資料直接儲存到MongoDB的文件結構中。取的時候再以二進位制格式取,這樣文件就能實現無損儲存。

  下面是我已經驗證成功,儲存Word到Mongo,然後從Mongo讀取Word的程式碼,在此和大家分享分享。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using MongoDB.Bson;
using MongoDB.Driver;

namespace Mongodb
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Init();
        }
        //資料庫連線字串
        const string strconn = "mongodb://127.0.0.1:27017";
        //資料庫名稱
        const string dbName = "test";
        MongoServer server;
        MongoDatabase db;
        void Init()
        {
            //建立資料庫連結
            server = MongoDB.Driver.MongoServer.Create(strconn);
            //獲得資料庫
            db = server.GetDatabase(dbName);
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            SaveDocToMongo(@"d:\quwenzhe.docx");
        }

        private void btnShow_Click(object sender, EventArgs e)
        {
            GetDocFromMongo(@"E:\newquwenzhe.doc");
        }

        /// <summary>
        /// 儲存Word到Mongo
        /// </summary>
        /// <param name="filename">需要儲存的檔名</param>
        private void SaveDocToMongo(string filename)
        {
            byte[] byteDoc = File.ReadAllBytes(filename);
            BsonDocument doc = new BsonDocument();
            doc["id"] = "1";
            doc["content"] = byteDoc;
            MongoCollection col = db.GetCollection("doc");
            col.Save(doc);
        }

        /// <summary>
        /// 將Mongo中的Word儲存到本地
        /// </summary>
        /// <param name="filename">儲存到本地的檔名</param>
        private void GetDocFromMongo(string filename)
        {
            MongoCollection col = db.GetCollection("doc");
            var query = new QueryDocument { { "id", "1" } };
            var result = col.FindAs<BsonDocument>(query);
            byte[] buff = (byte[])((BsonDocument)result.ToList()[0]).GetValue("content");
            FileStream fs;
            FileInfo fi = new FileInfo(filename);
            fs = fi.OpenWrite();
            fs.Write(buff, 0, buff.Length);
            fs.Close();
        }
    }
}
    執行完儲存操作後,大家可以在MongoVUE中檢視儲存的二進位制資料,如下圖所示:
    

   好了,時間不早了,我得小憩一下,準備下午的軟考,謝謝大家觀看。

相關推薦

Mongodb儲存讀取Word

      在為人事系統做操作日誌功能時,為了保證已經列印的信函可以還原,需要在每次列印信函時記錄Word信函的內容。   SQL Server只能記錄信函的文字內容,那信函的頁面佈局、字型格式等其他內容如何儲存呢?此時Mongodb閃亮登場,由於MongoDB的文件結構為

Qt讀取word

為了記錄一下 CWordOperate::CWordOperate( const QString filename,QObject *parent /*= NULL*/ ) : QObject(parent) { m_word = new QAxWidget("Word.Applicat

HTML 內容儲存word(angular4呼叫第三方js外掛實現)

前言: 專案需要將頁面內容儲存到word文件裡面,經過檢視部落格,最簡單的方法就是引入兩個js檔案即可完成這個功能,下面介紹一下是如何實現的。 內容: 一、專案所需檔案: js檔案:jquery.wordexport.js和FileSaver.js 二、實現步驟

python讀取word表格裡的資料

首先需要安裝相應的支援庫: 直接在命令列執行pip install python-docx 示例程式碼如下: import docx from docx import Document #

通過POI讀取Word(.doc)

1.jar匯入(https://mvnrepository.com/search?q=poi),一定要注意版本一致(本例是3.0.2) 2.java程式碼 public Map saveTxldl(FileItem upload) { Map result = new Ha

[日常]用Python讀取word中的表格並比較 2018-10-04

最近想對某些word文件(docx)的表格內容作比較, 於是找了一下相關工具. 參考Automate the Boring Stuff with Python中的word部分, 試用了python-docx - python-docx 0.8.7 documentation 演示如下.

用Python讀取Word並寫入Excel(二)

對於從word文件中得到的資訊,我們往往需要寫入excel,以便我們做後續的資料處理。在此,我們同樣利用win32 的api,寫入excel的方法如下: def write_excel(workbook,i_in,name_in,Gender_in,Sch

用Python讀取Word並寫入Excel(一)

工作中經常要處理大量的word文件,大部分內容都很簡單,比如說做一個彙總表,從發來的word文件裡提取名字、聯絡方式、地址等資訊,提取完之後還需要用Excel做彙總,對於十幾份的文件尚好,但對於成百份,

讀取Word的各種複雜表格內容

工作上遇到如何讀取Word文件中的表格內容,表格是有業務資料意義的,而且有一定規則的,因此不能直接讀取表格文字,而是遍歷表格單元格進行一行一列讀取。表格規則:(1)表格可以有表頭,表頭也有業務意思(2)

C#多執行緒動態讀取word程式碼

string flag = Regex.Match(nowTable.Cell(rowPos,1).Range.Text.Trim().ToLower().Replace("\r", "").Replace("\u0007", ""), @"[\u4e00-\u9fa5\/]*(.*)?", Reg

Python中辦公軟讀取word和讀出保存別

辦公 port def eas -s size pycha hsi 兩種 #讀word文件import win32comimport win32com.clientdef readWordFile(path): #調用系統word功能,可以出來doc和docx兩種文件

java 在MySQL中儲存檔案,讀取檔案(包括圖片,word,excel表格,ppt,zip檔案等)

在設計到資料庫的開發中,難免要將圖片或文件檔案(如word)插入到資料庫中的情況。一般來說,我們可以通過插入檔案相應的儲存路徑,而不是檔案本身,來避免直接向資料庫裡插入的麻煩。但有些時候,直接向MySQL中插入檔案,更加安全,而且更加容易管理。 首先,先要在資料庫中

通過讀取配置,啟動mongodb

star 個數 sun 數據請求 delete except bte domain 優點   在實際的項目中,經常利用mongodb數據庫做緩存,mongodb的並發性比較高,所以對於快速存儲、讀取信息有很多優點。在項目中對於第一次的數據請求會直接訪問數據庫,而對於獲得的信

Java遞迴讀取檔案路徑下所有檔名稱並儲存為Txt

本文用遞迴的方法實現讀取一個路徑下面的所有檔案並將檔名稱儲存到Txt檔案中,親測可用。 遞迴讀取檔案路徑下的所有檔案: /** * 遞迴讀取檔案路徑下的所有檔案 * * @param path * @param fileNameList

Python:讀取 .doc、.docx 兩種 Word 簡述及“Word 未能引發事件”錯誤

bug itext als htm 單獨 borde b+ compile http Python 中可以讀取 word 文件的庫有 python-docx 和 pywin32。 優點 缺點 python-docx 跨平臺 只能處理 .docx 格式,不能處理

使用pymongo讀取MongoDB資料庫中的

#使用pymongo庫 from pymongo import MongoClient #連線本地MongoDB資料庫(預設) client = MongoClient() #顯示已有databases(如果你知道要操作的資料庫,這一步可以不要) db = client.l

C#:簡單實現動態資料生成Word儲存

今天正好有人問我,怎麼生成一個報表式的Word文件。 就是文字的樣式和位置相對固定不變,只是裡面的內容從資料中讀取。 我覺得類似這種的一般用第三方報表來做比較簡便。但既然要求了Word,只好硬著頭皮來。 網上的方法大多數都是從一個GridView或表中獲得資料後向Word

寫論文時,Word修改儲存後,檔案越來越大的解決方法

寫論文時,Word文件經過反覆修改儲存後,檔案會越來越大,十分煩人,網上找了很多解決辦法,按個嘗試,現在總結分享出來,讓大家少走彎路。 縮小word檔案大小第一招:  Word在儲存DOC檔案時只是把一些後來的資訊存入,這樣就會出現哪怕您刪除了文件中的內容也會使它的檔案越

批量修改word儲存

*重點:本文章只支援DOC文件,不支援DOCX* 需求:由於驗收需要提交試執行記錄表(週報),有2套文件需要提交,從15年10月份開始至今,大概200多份文件,每份文件預計需要花1分鐘,如果手工,那麼大概需要4-5個小時,而且容易錯誤,還好我是程式設計師。 packa

ASP.NET C#如何讀取word,寫入word,複製內容到另一個word,批量修改檔名

首先要新增COM引用 Microsoft word 11.0 Object Library. 然後新增.NET引用 Microsoft.Office.Interop.Word.dll 下載Aspose.Words引用 Aspose.Words.dll using S