首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#读取word文档解决方案

2013-01-18 
C#读取word文档我现在要把word文档给读取出来,必须要原样输出,比如文档里有表格,必须输出的也是表格。。求高

C#读取word文档
我现在要把word文档给读取出来,必须要原样输出,比如文档里有表格,必须输出的也是表格。。求高手帮忙,希望有源码,提供信息者又分。。拜托大家了
[解决办法]
DSOframer 控件 可以读取 office 文件 包括word
[解决办法]
http://luckyjaky.javaeye.com/blog/348789
[解决办法]
不知道你要输出到什么地方?

[解决办法]
我的思想:先转换成网页格式html,再读取,但是这样.html文件里面会有body等属性,你要把他们去掉。
[解决办法]
Word.ApplicationClass wordApp=new ApplicationClass();
object file=path;
object nullobj=System.Reflection.Missing.Value;   
Word.Document doc = wordApp.Documents.Open(
ref file, ref nullobj, ref nullobj,   
ref nullobj, ref nullobj, ref nullobj,   
ref nullobj, ref nullobj, ref nullobj,   
ref nullobj, ref nullobj, ref nullobj);

doc.ActiveWindow.Selection.WholeStory();
doc.ActiveWindow.Selection.Copy();
IDataObject data=Clipboard.GetDataObject();
string str=data.GetData(DataFormats.Text).ToString();
doc.Close();
HTML格式正则获取
[解决办法]
    namespace OfficeManager
    {
                   public WordClass()
            {
                m_WordApp = new ApplicationClass();
            }
                       #region 属性
            public int WordCount
            {
                get
                {
                    if (m_Document != null)
                    {
                        Range rng = m_Document.Content;
                        rng.Select();
                        return m_Document.Characters.Count;
                    }
                    else
                        return -1;


                }
            }
            public object Missing
            {
                get
                {
                    return missing;
                }
            }
            #endregion
            #region 基本任务
            #region CreateDocument
            public void CreateDocument(string template)
            {
                object obj_template = template;
                if (template.Length <= 0) obj_template = missing;
                m_Document = m_WordApp.Documents.Add(ref obj_template, ref missing, ref missing, ref missing);
            }
            public void CreateDocument()
            {
                this.CreateDocument("");
            }
            #endregion
            #region OpenDocument
            public void OpenDocument(string fileName, bool readOnly)
            {
                object obj_FileName = fileName;
                object obj_ReadOnly = readOnly;
                m_Document = m_WordApp.Documents.Open(ref obj_FileName, ref missing, ref obj_ReadOnly, ref missing,
                    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing);
            }
            public void OpenDocument(string fileName)


            {
                this.OpenDocument(fileName, false);
            }
            #endregion
            #region Save & SaveAs
            public void Save()
            {
                if (m_Document != null)
                    m_Document.Save();
            }
            public void SaveAs(string fileName)
            {
                object obj_FileName = fileName;
                if (m_Document != null)
                {
                    m_Document.SaveAs(ref obj_FileName, ref missing, ref missing, ref missing, ref missing,
                        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                        ref missing, ref missing, ref missing, ref missing);
                }
            }
            #endregion
            #region Close
            public void Close(bool isSaveChanges)
            {
                object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
                if (isSaveChanges)
                    saveChanges = WdSaveOptions.wdSaveChanges;
                if (m_Document != null)
                    m_Document.Close(ref saveChanges, ref missing, ref missing);
            }
            #endregion
         


            #region 文档中的文本和对象
            public void AppendText(string text)
            {
                Selection currentSelection = this.m_WordApp.Selection;
                // Store the user's current Overtype selection
                bool userOvertype = this.m_WordApp.Options.Overtype;
                // Make sure Overtype is turned off.
                if (this.m_WordApp.Options.Overtype)
                {
                    this.m_WordApp.Options.Overtype = false;
                }
                // Test to see if selection is an insertion point.
                if (currentSelection.Type == WdSelectionType.wdSelectionIP)
                {
                    currentSelection.TypeText(text);
                    currentSelection.TypeParagraph();
                }
                else
                    if (currentSelection.Type == WdSelectionType.wdSelectionNormal)
                    {
                        // Move to start of selection.
                        if (this.m_WordApp.Options.ReplaceSelection)
                        {
                            object direction = WdCollapseDirection.wdCollapseStart;
                            currentSelection.Collapse(ref direction);
                        }
                        currentSelection.TypeText(text);


                        currentSelection.TypeParagraph();
                    }
                    else
                    {
                        // Do nothing.
                    }
                // Restore the user's Overtype selection
                this.m_WordApp.Options.Overtype = userOvertype;
            }
            #endregion
            #region 搜索和替换文档中的文本
            public void Replace(string oriText, string replaceText)
            {
                object replaceAll = WdReplace.wdReplaceAll;
                this.m_WordApp.Selection.Find.ClearFormatting();
                this.m_WordApp.Selection.Find.Text = oriText;
                this.m_WordApp.Selection.Find.Replacement.ClearFormatting();
                this.m_WordApp.Selection.Find.Replacement.Text = replaceText;
                this.m_WordApp.Selection.Find.Execute(
                    ref missing, ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing, ref missing,
                    ref replaceAll, ref missing, ref missing, ref missing, ref missing);
            }

            #endregion
            #region 文档中的Word表格
            /// <summary>
            /// 向文档中插入表格
            /// </summary>
            /// <param name="startIndex">开始位置</param>
            /// <param name="endIndex">结束位置</param>


            /// <param name="rowCount">行数</param>
            /// <param name="columnCount">列数</param>
            /// <returns></returns>
            public Table AppendTable(int startIndex, int endIndex, int rowCount, int columnCount)
            {
                object start = startIndex;
                object end = endIndex;
                Range tableLocation = this.m_Document.Range(ref start, ref end);
                return this.m_Document.Tables.Add(tableLocation, rowCount, columnCount, ref missing, ref missing);
            }
            /// <summary>
            /// 添加行
            /// </summary>
            /// <param name="table"></param>
            /// <returns></returns>
            public Row AppendRow(Table table)
            {
                object row = table.Rows[1];
                return table.Rows.Add(ref row);
            }
            /// <summary>
            /// 添加列
            /// </summary>
            /// <param name="table"></param>
            /// <returns></returns>
            public Column AppendColumn(Table table)
            {
                object column = table.Columns[1];
                return table.Columns.Add(ref column);
            }
            /// <summary>
            /// 设置单元格的文本和对齐方式
            /// </summary>
            /// <param name="cell">单元格</param>


            /// <param name="text">文本</param>
            /// <param name="align">对齐方式</param>
            public void SetCellText(Cell cell, string text, WdParagraphAlignment align)
            {
                cell.Range.Text = text;
                cell.Range.ParagraphFormat.Alignment = align;
            }
            #endregion
            #region IDisposable 成员
            public void Dispose()
            {
                try
                {
                    if (m_WordApp != null)
                        m_WordApp.Quit(ref missing, ref missing, ref missing);
                }
                catch (Exception ex)
                {
                    Debug.Write(ex.ToString());
                }
            }
            #endregion
        }
    }


热点排行