データベースダウンロードwordプレビュー機能の研究

4455 ワード

本文はここのいくつかの方法を参考にした.http://tobetobe.blog.51cto.com/1392243/354420
 
ずっとキャッシュを通じて実现したいと思って、どうして技术が足りなくて、曲线の救国の考えを歩いて、先にダウンロードして、それからプレビューして、ダウンロードのファイルを削除します.主に自分にメモをします.
に注意
1.クリップボードを閉じる前にクリアします.そうしないと、ファイルの削除に失敗したか、wordプレビューを開くように要求されます.
2.新しいプレビューを開く前にsleepをしばらくしてwordが完全に終了することを確認する
3.貼り付けにはsleepが必要です.貼り付けが完了したことを確認します.
 
コード:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop.Word;

namespace WordTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {

            if (openFileDialog1.ShowDialog() != System.Windows.Forms.DialogResult.OK) {
                return;
            }
            string str = openFileDialog1.FileName;//                 
            object sorceDocPath = str;//       

            #region   word     
            object readOnly = false;
            object isVisible = false;
            Object Nothing = System.Reflection.Missing.Value;
            object objDocType = WdDocumentType.wdTypeDocument;
            object type = WdBreakType.wdSectionBreakContinuous;
            Microsoft.Office.Interop.Word.Application wordApp1 = new Microsoft.Office.Interop.Word.ApplicationClass();
            Document openWord;
            openWord = wordApp1.Documents.Open(ref sorceDocPath, ref Nothing, ref readOnly, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref isVisible, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
            openWord.Select();
            openWord.Sections[1].Range.Copy();
            #endregion

            #region   word        
            Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
            Microsoft.Office.Interop.Word.Document newWordDoc = wordApp.Documents.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
            newWordDoc.Sections[1].Range.PasteAndFormat(WdRecoveryType.wdPasteDefault);
            System.Threading.Thread.Sleep(100);
            Clipboard.Clear();
            openWord.Close(ref Nothing, ref Nothing, ref Nothing);
            wordApp1.Quit(ref Nothing, ref Nothing, ref Nothing);
            wordApp.Visible = true;
            #endregion
            System.Threading.Thread.Sleep(500);
            System.IO.File.Delete(str);//                  !!
            GC.Collect();
        } 
    }
}