Demo 下载: http://download.csdn.net/source/2497321 1、操作Word例子 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Word = Microsoft.Office.Interop.Word; using System.Reflection; using System.Diagnostics; using System.Threading; using System.IO; namespace OfficeHelper { public class WordHelper { Word._Application _application = null; object _missing = Missing.Value; DateTime _firstTime, _endTime; /// <summary> /// 获取Word文档内容 /// </summary> /// <param name="fileName"></param> /// <returns></returns> public string GetWordData(string fileName) { StringBuilder sb = new StringBuilder(); object objFileName = fileName; object objReadonly = true; try { _firstTime = DateTime.Now; if (_application == null) { _application = new Word.ApplicationClass(); _application.Visible = false; } _endTime = DateTime.Now; // 打开Word文档 Word.Document doc = _application.Documents.Open(ref objFileName, ref _missing, ref objReadonly, 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); int paraCount = doc.Paragraphs.Count; object nextPara = 1; Word.Paragraph para = doc.Paragraphs[1]; if (para == null) return string.Empty; // 读取文档内容 while (true) { sb.Append(para.Range.Text); sb.Append(Environment.NewLine); para = para.Next(ref nextPara); if (para == null) break; Thread.Sleep(200); } WordApplicationClose(false); } catch (Exception ex) { WordApplicationClose(false); return string.Empty; } return sb.ToString(); } /// <summary> /// 根据扩展名创建不同格式的Word文档 /// </summary> /// <param name="fileName"></param> /// <param name="content"></param> public void CreateWrodDocument(string fileName, string content) { object objTemplate = Missing.Value; object objFileName = fileName; object objReadonly = true; object objwdFormat = Path.GetExtension(fileName).ToLower() == ".docx" ? Word.WdSaveFormat.wdFormatXMLDocument : Word.WdSaveFormat.wdFormatDocument; try { _firstTime = DateTime.Now; if (_application == null) { _application = new Word.ApplicationClass(); _application.Visible = false; } _endTime = DateTime.Now; // 打开Word文档 Word.Document doc = _application.Documents.Add(ref objTemplate, ref _missing, ref _missing, ref _missing); Word.Range range = doc.Content; range.Text = content; doc.SaveAs(ref objFileName,ref objwdFormat,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); WordApplicationClose(false); } catch (Exception ex) { WordApplicationClose(false); throw ex; } } /// <summary> /// 关闭Word进程 /// </summary> /// <param name="isSaveChange"></param> public void WordApplicationClose(bool isSaveChange) { try { object objSave = Word.WdSaveOptions.wdDoNotSaveChanges; if (isSaveChange) { objSave = Word.WdSaveOptions.wdSaveChanges; } if (_application != null) { _application.Documents.Close(ref objSave, ref _missing, ref _missing); _application.Quit(ref objSave, ref _missing, ref _missing); } Process[] processesByName = Process.GetProcessesByName("WINWORD"); foreach (Process process in processesByName) { DateTime startTime = process.StartTime; if ((startTime > _firstTime) && (startTime < _endTime)) { process.Kill(); } } } catch { } } } } 2、操作Excel例子 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Excel=Microsoft.Office.Interop.Excel; using System.Reflection; using System.Diagnostics; namespace OfficeHelper { public class ExcelHelper { Excel.Application _application = null; object _missing = Missing.Value; DateTime _firstTime ,_endTime; /// <summary> /// 获取Excel数据 /// </summary> /// <param name="fileName"></param> /// <returns></returns> public DataTable GetExcelData(string fileName) { DataTable dt = new DataTable(); try { _firstTime = DateTime.Now; // 创建Excel主程序 if (_application == null) { _application = new Excel.ApplicationClass(); _application.Visible = false; } _endTime = DateTime.Now; // 打开文档 Excel.Workbook workBook = _application.Workbooks.Open(fileName, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing); // 第一个Sheet Excel.Worksheet sheet = (Excel.Worksheet)workBook.Sheets[1]; bool isNoEmpty = true; object rowIndex, colIndex; int row = 2; dt.Columns.Add("姓名", typeof(string)); dt.Columns.Add("出生日期", typeof(string)); dt.Columns.Add("工资", typeof(string)); // 数据不为空 while (isNoEmpty) { DataRow dr = dt.NewRow(); rowIndex = row; for (int i = 0; i < 3; i++) { colIndex = i + 1; // 获取单元格的值 Excel.Range val = (Excel.Range)sheet.Cells[rowIndex, colIndex]; if (val != null && val.Text.ToString() != string.Empty) { dr[i] = val.Text; } else { isNoEmpty = false; } } if (isNoEmpty) dt.Rows.Add(dr); row++; } // 关闭Excel主程序 _application.Workbooks.Close(); _application.Application.Quit(); _application.Quit(); _application = null; KillExcelProcess(); } catch (Exception ex) { if (_application != null) { _application.Workbooks.Close(); _application.Application.Quit(); _application.Quit(); _application = null; KillExcelProcess(); } return null; } return dt; } /// <summary> /// 保存数据到Excel /// </summary> /// <param name="fileName"></param> /// <param name="dt"></param> /// <returns></returns> public bool SetExcelData(string fileName,DataTable dt) { if(dt == null || dt.Rows.Count ==0) return false; try { _firstTime = DateTime.Now; // 创建Excel主程序 if (_application == null) { _application = new Excel.ApplicationClass(); _application.Visible = false; } _endTime = DateTime.Now; // 打开文档 Excel.Workbook workBook = _application.Workbooks.Open(fileName, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing, _missing); // 第一个Sheet Excel.Worksheet sheet = (Excel.Worksheet)workBook.Sheets[1]; object rowIndex, colIndex,valType = typeof(string); int row = 2,rowCount = dt.Rows.Count; // 填充单元格数据 for(int i=0;i<rowCount; i++) { rowIndex = row; // 单元格赋值 for(int j =0;j<dt.Columns.Count; j++) { colIndex = j + 1; Excel.Range val = (Excel.Range)sheet.Cells[rowIndex, colIndex]; val.set_Value(_missing,dt.Rows[i][j]); } row++; } // 关闭Excel主程序 workBook.Save(); _application.Workbooks.Close(); _application.Application.Quit(); _application.Quit(); _application = null; KillExcelProcess(); } catch (Exception ex) { if (_application != null) { _application.Workbooks.Close(); _application.Application.Quit(); _application.Quit(); _application = null; KillExcelProcess(); } return false; } return true; } /// <summary> /// 关闭打开的Excel进程 /// </summary> public void KillExcelProcess() { try { Process[] processesByName = Process.GetProcessesByName("Excel"); foreach (Process process in processesByName) { DateTime startTime = process.StartTime; if ((startTime > _firstTime) && (startTime <_endTime)) { process.Kill(); } } } catch { } } } }