• <menu id="w2i4a"></menu>
  • logo DevExpress使用教程

    文檔首頁>>DevExpress使用教程>>DevExpress使用教程:PDF、Word、Excel文檔的預(yù)覽及操作處理

    DevExpress使用教程:PDF、Word、Excel文檔的預(yù)覽及操作處理


    在一般的管理系統(tǒng)模塊里面,越來越多的涉及到一些常用文檔的上傳保存操作,其中如PDF、Word、Excel等文檔,有時候是通過分布式的WCF技術(shù)實 現(xiàn)數(shù)據(jù)的顯示和處理,因此希望直接預(yù)覽而不需要下載文件,這樣能夠給我們提供很多的方便。在DevExpress里面,提供了相應(yīng)的控件來顯示和處理這些 文檔,本文主要介紹如何利用DevExpress的控件實現(xiàn)對PDF、Word、Excel文檔的預(yù)覽和操作處理。

    | DevExpress最新版下載 |

    1、PDF的預(yù)覽和操作

    在較早的DevExpress的控件里面,已經(jīng)提供了對應(yīng)的PDF文檔的顯示控件,不過由于其對PDF格式支持不是很好,有些文檔是Office導(dǎo) 出的,也不是很正常閱讀,因此很少使用,本文介紹的DevExpress的PDF查看控件是基于14.1的,測試過很多文檔,好像都能正常打開,因此也想 在系統(tǒng)中廣泛使用了。

    為了演示這些控件的處理,我單獨編寫了一個例子,用來實現(xiàn)對PDF、Word、Excel等文檔的處理。

    DevExpress PDF預(yù)覽操作

    為了顯示PDF文檔,我們需要在界面里面添加一個XtraPdfViewer.PdfViewer的控件,這個主要是用來顯示PDF的,它有很多屬性方法,用來實現(xiàn)對PDF的處理操作,測試界面設(shè)計好如下所示。

    DevExpress PDF預(yù)覽操作

    對PDF,我們一般主要是用來打開文件,另存為,或者預(yù)覽就可以了。相關(guān)的操作代碼如下所示。

    /// <summary>
        /// PDF測試顯示窗體
        /// </summary>
        public partial class PDFViewer : Form
        {
            //記錄窗體的名稱
            readonly string mainFormText;
    
            public PDFViewer()
            {
                InitializeComponent();
    
                //記錄窗體的名稱,并實現(xiàn)文檔變化事件的處理,方便顯示新的文件名稱
                mainFormText = this.Text;
                pdfViewer1.DocumentChanged += new DevExpress.XtraPdfViewer.PdfDocumentChangedEventHandler(pdfViewer1_DocumentChanged);
            }
    
            /// <summary>
            /// PDF文檔變化后,實現(xiàn)對新文件名稱的顯示
            /// </summary>
            void pdfViewer1_DocumentChanged(object sender, DevExpress.XtraPdfViewer.PdfDocumentChangedEventArgs e)
            {
                string fileName = Path.GetFileName(e.DocumentFilePath);
                if (String.IsNullOrEmpty(fileName))
                {
                    Text = mainFormText;
                }
                else
                {
                    Text = fileName + " - " + mainFormText;
                }
            }
    
            /// <summary>
            /// 打開PDF文件
            /// </summary>
            private void btnOpenFile_Click(object sender, EventArgs e)
            {
                string filePath = FileDialogHelper.OpenPdf();
                if (!string.IsNullOrEmpty(filePath))
                {
                    this.pdfViewer1.LoadDocument(filePath);
                }
            }
    
            /// <summary>
            /// 另存為PDF文件
            /// </summary>
            private void btnSaveAs_Click(object sender, EventArgs e)
            {
                string dir = System.Environment.CurrentDirectory;
                string filePath = FileDialogHelper.SavePdf("", dir);
                if (!string.IsNullOrEmpty(filePath))
                {
                    try
                    {
                        this.pdfViewer1.SaveDocument(filePath);
                        MessageUtil.ShowTips("保存成功");
                    }
                    catch (Exception ex)
                    {
                        LogTextHelper.Error(ex);
                        MessageUtil.ShowError(ex.Message);
                    }
                }
            }
    
            /// <summary>
            /// PDF文件打印
            /// </summary>
            private void btnPreview_Click(object sender, EventArgs e)
            {
                this.pdfViewer1.Print();
            }
        }

    從上面的代碼,我們可以看到,對于PDF,我們操作起來很方便,主要就是在界面里面加載文件后,就可以對PDFViewer對象實現(xiàn)相關(guān)的操作了。

    2、WORD文檔的預(yù)覽和操作

    類似于PDF文檔,我們對WORD文檔,也是通過使用RichEditControl實現(xiàn)文檔的顯示,不過和PDFViewer不同,這個控件可以實現(xiàn)對文檔的修改和保存操作,這種對于我們提供用戶對文檔進行編輯很方便。

    測試例子的界面如下所示。

    DevExpress word文檔操作

    相關(guān)的操作代碼,也和PDF的操作類似,不同的是,它在文檔變化后,不能很容易從參數(shù)里面獲取到對應(yīng)的文檔的路徑,需要特殊的處理才能得到。

    /// <summary>
        /// WORD控件的測試例子
        /// </summary>
        public partial class WordViewer : Form
        {
            //記錄窗體的名稱
            readonly string mainFormText;
    
            public WordViewer()
            {
                InitializeComponent();
    
                //記錄窗體的名稱,并實現(xiàn)文檔變化事件的處理,方便顯示新的文件名稱
                mainFormText = this.Text;
                this.richEditControl1.DocumentLoaded += new EventHandler(richEditControl1_DocumentLoaded);
            }
    
            /// <summary>
            /// WORD文檔變化后,實現(xiàn)對新文件名稱的顯示
            /// </summary>
            void richEditControl1_DocumentLoaded(object sender, EventArgs e)
            {
                string fileName = Path.GetFileName(this.richEditControl1.Options.DocumentSaveOptions.CurrentFileName);
                if (String.IsNullOrEmpty(fileName))
                {
                    Text = mainFormText;
                }
                else
                {
                    Text = fileName + " - " + mainFormText;
                }
    
                //修改默認字體
                DocumentRange range = richEditControl1.Document.Range;
                CharacterProperties cp = this.richEditControl1.Document.BeginUpdateCharacters(range);
                cp.FontName = "新宋體";
                //cp.FontSize = 12;
                this.richEditControl1.Document.EndUpdateCharacters(cp);
            }
    
            /// <summary>
            /// 打開WORD文件
            /// </summary>
            private void btnOpenFile_Click(object sender, EventArgs e)
            {
                string filePath = FileDialogHelper.OpenWord();
                if (!string.IsNullOrEmpty(filePath))
                {
                    richEditControl1.LoadDocument(filePath);//, DocumentFormat.Doc);
                }
            }
    
            /// <summary>
            /// 保存WORD文件
            /// </summary>
            private void btnSaveFile_Click(object sender, EventArgs e)
            {
                this.richEditControl1.SaveDocument();
            }
    
            /// <summary>
            /// 另存為WORD文件
            /// </summary>
            private void btnSaveAs_Click(object sender, EventArgs e)
            {
                try
                {
                    richEditControl1.SaveDocumentAs();
                    MessageUtil.ShowTips("保存成功");
                }
                catch (Exception ex)
                {
                    LogTextHelper.Error(ex);
                    MessageUtil.ShowError(ex.Message);
                }
            }
    
            /// <summary>
            /// WORD文件打印
            /// </summary>
            private void btnPreview_Click(object sender, EventArgs e)
            {
                this.richEditControl1.ShowPrintPreview();
            }
        }

    加載文檔后,界面顯示內(nèi)容如下所示:

    DevExpress文檔處理

    文檔控件很容易支持打印預(yù)覽功能,打印預(yù)覽的界面如下所示:

    DevExpress文檔處理

    不過話說回來,這個RichEditControl雖然能夠較好顯示W(wǎng)ord文檔,不過也有一些字體顯示的不是很好,格式和微軟的Word軟件顯示的有些不太一樣,格式有所損失。

    因此如果對于格式要求比較嚴謹?shù)模ㄗh還是只是做顯示為佳,不要保存原有的文檔。如果對格式不是特別嚴格,倒是可以作為一個文檔服務(wù)器實現(xiàn)文檔的新建、保存處理。

    3、Excel文檔的預(yù)覽和操作

    對于Excel文檔的預(yù)覽和操作,DevExpress控件在最近版本中增加的 XtraSpreadsheet.SpreadsheetControl控件就可以實現(xiàn)Excel的顯示和處理操作,這個控件很強大,可以處理很復(fù)雜格式 的Excel文檔,雖然我原來使用了另外一個FarPoint Spread控件組,不過這個XtraSpreadsheet控件組,如果集成在DevExpress也就很方便了。

    DevExpress excel文檔操作

    這個DevExpress的控件,可以在其中進行Excel的新建、保存、打印預(yù)覽等操作,當然也可以打開我們已有的Excel文件了。

    打開文件后,界面效果如下所示。

    DevExpress excel文檔操作

    界面的相關(guān)功能操作代碼如下所示。

    /// <summary>
        /// Excel控件的測試例子
        /// </summary>
        public partial class ExcelViewer : Form
        {
            //記錄窗體的名稱
            readonly string mainFormText;
    
            public ExcelViewer()
            {
                InitializeComponent();
    
                //記錄窗體的名稱,并實現(xiàn)文檔變化事件的處理,方便顯示新的文件名稱
                mainFormText = this.Text;
                this.spreadsheetControl1.DocumentLoaded += new EventHandler(spreadsheetControl1_DocumentLoaded);
            }
    
            /// <summary>
            /// 文檔變化后,實現(xiàn)對新文件名稱的顯示
            /// </summary>
            void spreadsheetControl1_DocumentLoaded(object sender, EventArgs e)
            {
                string fileName = Path.GetFileName(this.spreadsheetControl1.Document.Path);
                if (String.IsNullOrEmpty(fileName))
                {
                    Text = mainFormText;
                }
                else
                {
                    Text = fileName + " - " + mainFormText;
                }
            }
    
            /// <summary>
            /// 打開Excel文件
            /// </summary>
            private void btnOpenFile_Click(object sender, EventArgs e)
            { 
                string filePath = FileDialogHelper.OpenExcel();
                if (!string.IsNullOrEmpty(filePath))
                {
                    IWorkbook workbook = spreadsheetControl1.Document;
                    workbook.LoadDocument(filePath);
                }
            }
    
            /// <summary>
            /// 保存Excel文件
            /// </summary>
            private void btnSaveFile_Click(object sender, EventArgs e)
            {
                spreadsheetControl1.SaveDocument();
            }
    
            /// <summary>
            /// 另存為Excel文件
            /// </summary>
            private void btnSaveAs_Click(object sender, EventArgs e)
            {
                string dir = System.Environment.CurrentDirectory;
                string filePath = FileDialogHelper.SaveExcel("", dir);
                if (!string.IsNullOrEmpty(filePath))
                {
                    try
                    {
                        IWorkbook workbook = spreadsheetControl1.Document;
                        workbook.SaveDocument(filePath);
    
                        MessageUtil.ShowTips("保存成功");
                    }
                    catch (Exception ex)
                    {
                        LogTextHelper.Error(ex);
                        MessageUtil.ShowError(ex.Message);
                    }
                }
            }
    
            /// <summary>
            /// Excel文件打印
            /// </summary>
            private void btnPreview_Click(object sender, EventArgs e)
            {
                this.spreadsheetControl1.ShowPrintPreview();
            }
        }

    預(yù)覽也很方便,和Word的預(yù)覽操作類似。

    DevExpress excel文檔操作

    以上就是幾個常用文檔的顯示和操作案例,有了這些我們很容易整合到我們的附件管理里面了。

    如我在我的《Winform開發(fā)框架》、《混合式開發(fā)框架里面》使用的通用附件管理模塊,就是基于這些特點,實現(xiàn)圖片、Excel文檔、Word文檔和PDF等文檔的在線預(yù)覽和管理操作,界面截圖如下所示。

    DevExpress文檔操作

    本文轉(zhuǎn)載自博客園伍華聰博客

    如果您要購買DevExpress或者對產(chǎn)品還存在疑問,請咨詢我們的在線客服>>

    慧都學院2017全新DevExpress線下研修班火熱報名中!


    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();