获取 WORD 表格内容

 

public Dictionary<string, string> GetWordTableContent(object fullname, int tableIndex)
        {
            Microsoft.Office.Interop.Word.Application wordApp = new
              Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document doc = new
                Microsoft.Office.Interop.Word.Document();
            object missing = System.Reflection.Missing.Value;

            Dictionary<string, string> tableItems = new Dictionary<string, string>();

            try
            {
                wordApp.Visible = false;

                doc = wordApp.Documents.Open(ref fullname, 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);

                if (doc.Content.Tables.Count > 0)
                {
                    if (tableIndex <= 0 || tableIndex > doc.Content.Tables.Count)
                        throw new Exception("Incorrect tableIndex.");

                    Microsoft.Office.Interop.Word.Table table = doc.Content.Tables[tableIndex];

                    for (int i = 1; i <= table.Rows.Count; i++)
                    {
                        for (int c = 1; c <= table.Columns.Count; c++)
                        {
                            try
                            {
                                tableItems.Add(string.Format("{0},{1}", i, c), table.Cell(i, c).Range.Text ?? "");
                            }
                            catch (COMException comEx)
                            {
                                if (comEx.Message == "The requested member of the collection does not exist.")
                                    continue;
                                throw;
                            }
                        }
                    }
                }
            }
            catch (Exception err)
            {
                if (doc != null)
                    doc.Close(ref missing, ref missing, ref missing);
                if (wordApp != null)
                    wordApp.Quit(ref missing, ref missing, ref missing);
                throw;
            }
            finally
            {
                if (doc != null)
                    doc.Close(ref missing, ref missing, ref missing);
                if (wordApp != null)
                    wordApp.Quit(ref missing, ref missing, ref missing);
            }
            return tableItems;
        }

 

posted @ 2012-04-28 14:51  Yu  阅读(387)  评论(0编辑  收藏  举报