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
{
}
}
}
}
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
{
}
}
}
}