.net Office PIA 2007

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

 

    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值