using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data; using Word = Microsoft.Office.Interop.Word;
using Microsoft.Office.Interop.Word;
using System.Windows.Forms;
using System.Drawing;
/************************************************************************************************************************************
* * 文件名 :
* * 声明 :
* * 创建者 : Ward
* * 修改者 : Ward
************************************************************************************************************************************/
namespace Common
{
/********************************************************************************************************************************
* * 类名 : WordPlayer
* * 声明 :
* * 创建者 : Ward
* * 修改者 : Ward
********************************************************************************************************************************/
public class WordPlayer
{
#region - 属性 -
private static Microsoft.Office.Interop.Word._Application oWord = null;
private static Microsoft.Office.Interop.Word._Document odoc = null;
private static Microsoft.Office.Interop.Word._Document oDoc
{
get
{
if (odoc == null)
{
odoc = oWord.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
} return odoc;
}
set
{
if (value != null)
{
odoc = value;
}
}
}
private static object Nothing = System.Reflection.Missing.Value;
public enum Orientation
{
横板,
竖板
}
public enum Alignment
{
左对齐,
居中,
右对齐
}
#endregion #region - 添加文档 - #region - 创建并打开一个空的word文档进行编辑 -
public static void OpenNewWordFileToEdit()
{
oDoc = oWord.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
}
#endregion #endregion #region - 创建新Word -
public static bool CreateWord(bool isVisible)
{
try
{
oWord = new Microsoft.Office.Interop.Word.Application();
oWord.Visible = isVisible; return true;
}
catch (Exception)
{
return false;
}
}
public static bool CreateWord()
{
return CreateWord(false);
}
#endregion #region - 打开文档 -
public static bool Open(string filePath, bool isVisible)
{
try
{
oWord.Visible = isVisible; object path = filePath;
oDoc = oWord.Documents.Open(ref path,
ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing); return true;
}
catch (Exception)
{
return false;
}
}
#endregion #region - 插入表格 -
public static bool InsertTable(System.Data.DataTable dt, bool haveBorder, double[] colWidths)
{
try
{
object Nothing = System.Reflection.Missing.Value; int lenght = oDoc.Characters.Count - 1;
object start = lenght;
object end = lenght; //表格起始坐标
Microsoft.Office.Interop.Word.Range tableLocation = oDoc.Range(ref start, ref end); //添加Word表格
Microsoft.Office.Interop.Word.Table table = oDoc.Tables.Add(tableLocation, dt.Rows.Count, dt.Columns.Count, ref Nothing, ref Nothing); if (colWidths != null)
{
for (int i = 0; i < colWidths.Length; i++)
{
table.Columns[i + 1].Width = (float)(28.5F * colWidths[i]);
}
} ///设置TABLE的样式
table.Rows.HeightRule = Microsoft.Office.Interop.Word.WdRowHeightRule.wdRowHeightAtLeast;
table.Rows.Height = oWord.CentimetersToPoints(float.Parse("0.8"));
table.Range.Font.Size = 10.5F;
table.Range.Font.Name = "宋体";
table.Range.Font.Bold = 0;
table.Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
table.Range.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; if (haveBorder == true)
{
//设置外框样式
table.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
table.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
//样式设置结束
} for (int row = 0; row < dt.Rows.Count; row++)
{
for (int col = 0; col < dt.Columns.Count; col++)
{
table.Cell(row + 1, col + 1).Range.Text = dt.Rows[row][col].ToString();
}
} return true;
}
catch (Exception e)
{
MessageBox.Show(e.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
finally
{ }
}
public static bool InsertTable(System.Data.DataTable dt, bool haveBorder)
{
return InsertTable(dt, haveBorder, null);
}
public static bool InsertTable(System.Data.DataTable dt)
{
return InsertTable(dt, false, null);
}
#endregion #region - 插入文本 -
public static bool InsertText(string strText, System.Drawing.Font font, Alignment alignment, bool isAftre)
{
try
{
Word.Range rng = oDoc.Content; int lenght = oDoc.Characters.Count - 1;
object start = lenght;
object end = lenght; rng = oDoc.Range(ref start, ref end); if (isAftre == true)
{
strText += "\r\n";
} rng.Text = strText; rng.Font.Name = font.Name;
rng.Font.Size = font.Size;
if (font.Style == FontStyle.Bold) { rng.Font.Bold = 1; } //设置单元格中字体为粗体 SetAlignment(rng, alignment); return true;
}
catch (Exception)
{
return false;
}
} public static bool InsertText(string strText)
{
return InsertText(strText, new System.Drawing.Font("宋体", 10.5F, FontStyle.Bold), Alignment.左对齐, false);
}
#endregion #region - 设置对齐方式 -
private static Microsoft.Office.Interop.Word.WdParagraphAlignment SetAlignment(Range rng, Alignment alignment)
{
rng.ParagraphFormat.Alignment = SetAlignment(alignment);
return SetAlignment(alignment);
}
private static Microsoft.Office.Interop.Word.WdParagraphAlignment SetAlignment(Alignment alignment)
{
if (alignment == Alignment.居中)
{
return Word.WdParagraphAlignment.wdAlignParagraphCenter;
}
else if (alignment == Alignment.左对齐)
{
return Word.WdParagraphAlignment.wdAlignParagraphLeft;
}
else
{ return Word.WdParagraphAlignment.wdAlignParagraphRight; }
}
#endregion #region - 页面设置 -
public static void SetPage(Orientation orientation, double width, double height, double topMargin, double leftMargin, double rightMargin, double bottomMargin)
{
oDoc.PageSetup.PageWidth = oWord.CentimetersToPoints((float)width);
oDoc.PageSetup.PageHeight = oWord.CentimetersToPoints((float)height); if (orientation == Orientation.横板)
{
oDoc.PageSetup.Orientation = Microsoft.Office.Interop.Word.WdOrientation.wdOrientLandscape;
} oDoc.PageSetup.TopMargin = (float)(topMargin * 25);//上边距
oDoc.PageSetup.LeftMargin = (float)(leftMargin * 25);//左边距
oDoc.PageSetup.RightMargin = (float)(rightMargin * 25);//右边距
oDoc.PageSetup.BottomMargin = (float)(bottomMargin * 25);//下边距
}
public static void SetPage(Orientation orientation, double topMargin, double leftMargin, double rightMargin, double bottomMargin)
{
SetPage(orientation, 21, 29.7, topMargin, leftMargin, rightMargin, bottomMargin);
}
public static void SetPage(double topMargin, double leftMargin, double rightMargin, double bottomMargin)
{
SetPage(Orientation.竖板, 21, 29.7, topMargin, leftMargin, rightMargin, bottomMargin);
}
#endregion #region - 插入分页符 -
public static void InsertBreak()
{
Word.Paragraph para;
para = oDoc.Content.Paragraphs.Add(ref Nothing);
object pBreak = (int)WdBreakType.wdSectionBreakNextPage;
para.Range.InsertBreak(ref pBreak);
}
#endregion #region - 关闭当前文档 -
public static bool CloseDocument()
{
try
{
object doNotSaveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;
oDoc.Close(ref doNotSaveChanges, ref Nothing, ref Nothing);
oDoc = null;
return true;
}
catch (Exception)
{
return false;
}
}
#endregion #region - 关闭程序 -
public static bool Quit()
{
try
{
object saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;
oWord.Quit(ref saveOption, ref Nothing, ref Nothing); return true;
}
catch (Exception)
{
return false;
}
}
#endregion #region - 保存文档 -
public static bool Save(string savePath)
{
return Save(savePath, false);
}
public static bool Save(string savePath, bool isClose)
{
try
{
object fileName = savePath;
oDoc.SaveAs(ref fileName, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing); if (isClose)
{
return CloseDocument();
}
return true;
}
catch (Exception)
{
return false;
}
}
#endregion #region - 插入页脚 -
public static bool InsertPageFooter(string text, System.Drawing.Font font, WordPlayer.Alignment alignment)
{
try
{
oWord.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekCurrentPageFooter;//页脚
oWord.Selection.InsertAfter(text);
GetWordFont(oWord.Selection.Font, font); SetAlignment(oWord.Selection.Range, alignment); return true;
}
catch (Exception)
{
return false;
}
}
public static bool InsertPageFooterNumber(System.Drawing.Font font, WordPlayer.Alignment alignment)
{
try
{
oWord.ActiveWindow.View.SeekView = WdSeekView.wdSeekCurrentPageHeader;
oWord.Selection.WholeStory();
oWord.Selection.ParagraphFormat.Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
oWord.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekMainDocument; oWord.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekCurrentPageFooter;//页脚
oWord.Selection.TypeText("第"); object page = WdFieldType.wdFieldPage;
oWord.Selection.Fields.Add(oWord.Selection.Range, ref page, ref Nothing, ref Nothing); oWord.Selection.TypeText("页/共");
object pages = WdFieldType.wdFieldNumPages; oWord.Selection.Fields.Add(oWord.Selection.Range, ref pages, ref Nothing, ref Nothing);
oWord.Selection.TypeText("页"); GetWordFont(oWord.Selection.Font, font);
SetAlignment(oWord.Selection.Range, alignment);
oWord.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekMainDocument;
return true;
}
catch (Exception)
{
return false;
}
}
#endregion #region - 字体格式设定 -
public static void GetWordFont(Microsoft.Office.Interop.Word.Font wordFont, System.Drawing.Font font)
{
wordFont.Name = font.Name;
wordFont.Size = font.Size;
if (font.Bold) { wordFont.Bold = 1; }
if (font.Italic) { wordFont.Italic = 1; }
if (font.Underline == true)
{
wordFont.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone;
}
wordFont.UnderlineColor = Microsoft.Office.Interop.Word.WdColor.wdColorAutomatic; if (font.Strikeout)
{
wordFont.StrikeThrough = 1;//删除线
}
}
#endregion #region - 获取Word中的颜色 -
public static WdColor GetWordColor(Color c)
{
UInt32 R = 0x1, G = 0x100, B = 0x10000;
return (Microsoft.Office.Interop.Word.WdColor)(R * c.R + G * c.G + B * c.B);
}
#endregion
}
}

  

WordPlayer的更多相关文章

  1. C# /windowForm/WPF/SilverLight里面操作Word帮助类提供给大家

    很多的程序都需要用到对word的操作,数据库里面的表需要一书面的形式展示出来,最近在的一个项 using System; using System.Collections.Generic; using ...

随机推荐

  1. 一道笔试题:给定编码规则,实现decode()方法

    public class CodeDecode {     /*变换函数encode()顺序考察已知字符串的字符,按以下规则逐组生成新字符串:       (1)若已知字符串的当前字符不是大于0的数字 ...

  2. iOS蓝色和黄色文件夹新建方式区别(区别之前)

    关于这个问题,好像xcode9之前还是多少来着,创建方式是这样: 1.New Group创建的黄色文件夹是“假”文件夹,也就是说 show in finder 是看不到的 解释:这个文件夹并不是真正的 ...

  3. WCF中记录SOAP消息日志

    Windows Communication Foundation (WCF) 默认启用消息日志,WCF使用了在System.Diagnostics名称空间中定义的跟踪机制.在这个跟踪机制中,通过在配置 ...

  4. 在Android上启用Kiosk模式

    我们的云帆机器人(上面运行的安卓程序)有一个线下场景是商场,由于商场人多,总会遇到一些用户在我们的app里乱点,然后会跳出程序进入到系统设置的一些界面,这样很不友好. 比如程序中有一些需要输入文字的地 ...

  5. SVProgressHUD在viewDidLoad里无法显示的bug

    两年前已经开始讨论,至今没有解决方案.https://github.com/samvermette/SVProgressHUD/issues/54 [SVProgressHUD show] 的逻辑要放 ...

  6. Ubunt 使用Virtualbox虚拟机NAT无法上网解决办法

    我的Ubuntu安装了一个Centos虚拟机,为了SSH和上外网的方便,使用了NAT+host Only方式,实现内网+外网,但是安装好的Centos不能连接外网,很是无语,只能Google了-- 解 ...

  7. python修饰器(装饰器)以及wraps

    Python装饰器(decorator)是在程序开发中经常使用到的功能,合理使用装饰器,能让我们的程序如虎添翼. 装饰器的引入 初期及问题的诞生 假如现在在一个公司,有A B C三个业务部门,还有S一 ...

  8. Series 入门(创建和增删改查)

    Series 是pandas两大数据结构中(DataFrame,Series)的一种.使用pandas 前需要将pandas 模块引入,因为Series和DataFrame用的次数非常多,所以将其引入 ...

  9. MXNET:监督学习

    线性回归 给定一个数据点集合 X 和对应的目标值 y,线性模型的目标就是找到一条使用向量 w 和位移 b 描述的线,来尽可能地近似每个样本X[i] 和 y[i]. 数学公式表示为\(\hat{y}=X ...

  10. TCP/IP四层模型讲解笔记

    本文转载自:http://www.vuln.cn/2041 OSI七层模型   表示层:用来解码不同的格式为机器语言,以及其他功能. 会话层:判断是否需要网络传输. 传输层:识别端口来指定服务器,如指 ...