Пример #1
0
        public void WriteProject()
        {
            string[] txtID = new string[] {
                "tgProjectName", "tgProjectType", "tgCoustomerName", "tgParkName",
                "tgIndustrialParkName", "tgSector", "tgOwnerName", "tgOwnerDeptName",
                "tgIsDiversion", "tgMarketingActivityName", "tgDescription", "tgIsKeyProject",
                "tgProjectEndStatus", "tgCreatorName", "tgCreateTime", "tgCreatorDeptName",
                "tgPhaseName", "tgPhaseStatus", "tgPhaseCreatorName", "tgPhaseCreateTime"
            };
            DataTable dt = new DataTable();

            for (int i = 0; i < txtID.Length; i++)
            {
                dt.Columns.Add(txtID[i]);
            }

            DataRow dr = dt.NewRow();

            for (int i = 0; i < dt.Columns.Count; i++)
            {
                dr[dt.Columns[i].ColumnName] = dt.Columns[i].ColumnName;
            }
            dt.Rows.Add(dr);

            SimplePropertyCollection spcollection = new SimplePropertyCollection();

            for (int i = 0; i < dt.Columns.Count; i++)
            {
                spcollection.Add(new DCTSimpleProperty()
                {
                    TagID = dt.Columns[i].ColumnName, IsReadOnly = true
                });
            }

            string        path          = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
            DirectoryInfo rootDirectory = new DirectoryInfo(path);

            byte[] templateBinary = File.ReadAllBytes(Path.Combine(rootDirectory.Parent.Parent.FullName, "项目信息.docx"));
            byte[] fillBinary     = WordEntry.CopyPageFillData(templateBinary, dt.DefaultView, spcollection);
            File.WriteAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "项目信息.docx"), fillBinary);
        }
Пример #2
0
		private static void ClonePageAndFill(DataRowView drv, OpenXmlElement item, ref OpenXmlElement addItem, SimplePropertyCollection templateSimples)
		{
			foreach (SdtElement sdtElement in item.Descendants<SdtElement>())
			{
				foreach (SdtAlias ite11 in sdtElement.Descendants<SdtAlias>())
				{
					DCTSimpleProperty temSimple = templateSimples[ite11.Val];
					if (temSimple != null)
					{
						var items = sdtElement.Descendants<Run>();
						if (items.Count() > 0)
						{
							Run runElement = items.First();
							runElement.RemoveAllChildren<Text>();
							runElement.AppendChild<Text>(new Text(GeneralFormatter.ToString(drv[temSimple.TagID], temSimple.FormatString)));

							if (temSimple.IsReadOnly)
							{
								Lock lockControl = new Lock();
								lockControl.Val = LockingValues.SdtContentLocked;
								sdtElement.SdtProperties.Append(lockControl);
							}
						}
					}
				}
			}
		}
Пример #3
0
		private static void CopyPageFillTemplate(DataRowView drv, Body wordBody, SimplePropertyCollection templateSimples)
		{
			foreach (SdtElement fillItem in wordBody.Descendants<SdtElement>())
			{
				foreach (SdtAlias sdtAlias in fillItem.Descendants<SdtAlias>())
				{
					DCTSimpleProperty dcts = templateSimples[sdtAlias.Val];
					if (dcts != null)
					{
						var items = fillItem.Descendants<Run>();
						if (items.Count() > 0)
						{
							Run runElement = items.First();
							runElement.RemoveAllChildren<Text>();
							runElement.AppendChild<Text>(new Text(GeneralFormatter.ToString(drv[dcts.TagID], dcts.FormatString)));

							if (dcts.IsReadOnly)
							{
								Lock lockControl = new Lock();
								lockControl.Val = LockingValues.SdtContentLocked;
								fillItem.SdtProperties.Append(lockControl);
							}
						}

					}
				}
			}
		}
Пример #4
0
		public static byte[] CopyPageFillData(byte[] templateBuffer, DataView dv, SimplePropertyCollection templateSimples)
		{
			using (MemoryStream ms = new MemoryStream())
			{
				ms.Write(templateBuffer, 0, templateBuffer.Length);
				using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(ms, true))
				{
					Body wordBody = wordDoc.MainDocumentPart.Document.Body;
					List<OpenXmlElement> ChildElements = wordBody.ChildElements.ToList<OpenXmlElement>();
					SectionProperties bodySectionp = wordBody.Descendants<SectionProperties>().LastOrDefault();
					bool tagFirst = true;
					int i = 1;
					foreach (DataRowView drv in dv)
					{
						if (i == 1)
						{
							CopyPageFillTemplate(drv, wordBody, templateSimples);
							i++;
							continue;
						}
						foreach (OpenXmlElement item in ChildElements)
						{
							if (item is SectionProperties)
							{
								break;
							}
							OpenXmlElement addItem = (OpenXmlElement)item.CloneNode(true);
							if (tagFirst)
							{
								AddPageEnd(wordBody, i, bodySectionp);
								tagFirst = false;
							}
							ClonePageAndFill(drv, item, ref addItem, templateSimples);
							wordBody.InsertBefore<OpenXmlElement>(addItem, bodySectionp);
						}
						tagFirst = true;
						i++;
					}
				}
				return ms.ToArray();
			}
		}
Пример #5
0
        public void FillCopyPageTest()
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("tag1", typeof(string));
            dt.Columns.Add("y1", typeof(int));
            dt.Columns.Add("m1", typeof(int));
            dt.Columns.Add("d1", typeof(int));
            dt.Columns.Add("y2", typeof(int));
            dt.Columns.Add("m2", typeof(int));
            dt.Columns.Add("d2", typeof(int));

            for (int i = 1; i <= 120; i++)
            {
                DataRow dr = dt.NewRow();
                dr["tag1"] = "这是一份合同";
                dr["y1"]   = System.DateTime.Now.Year;
                dr["m1"]   = System.DateTime.Now.Month;
                dr["d1"]   = System.DateTime.Now.Month;

                dr["y2"] = System.DateTime.Now.Year + 2;
                dr["m2"] = System.DateTime.Now.Month + 2;
                dr["d2"] = System.DateTime.Now.Month + 2;

                dt.Rows.Add(dr);
            }

            SimplePropertyCollection spcollection = new SimplePropertyCollection();

            spcollection.Add(new DCTSimpleProperty()
            {
                TagID = "tag1", IsReadOnly = true
            });
            spcollection.Add(new DCTSimpleProperty()
            {
                TagID = "y1", IsReadOnly = true
            });
            spcollection.Add(new DCTSimpleProperty()
            {
                TagID = "m1", IsReadOnly = true
            });
            spcollection.Add(new DCTSimpleProperty()
            {
                TagID = "d1", IsReadOnly = true
            });

            spcollection.Add(new DCTSimpleProperty()
            {
                TagID = "y2", IsReadOnly = true
            });
            spcollection.Add(new DCTSimpleProperty()
            {
                TagID = "m2", IsReadOnly = true
            });
            spcollection.Add(new DCTSimpleProperty()
            {
                TagID = "d2", IsReadOnly = true
            });


            string        path          = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
            DirectoryInfo rootDirectory = new DirectoryInfo(path);

            byte[] templateBinary = File.ReadAllBytes(Path.Combine(rootDirectory.Parent.Parent.FullName, "劳动合同续签书.docx"));
            byte[] fillBinary     = WordEntry.CopyPageFillData(templateBinary, dt.DefaultView, spcollection);
            File.WriteAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "劳动合同续签书.docx"), fillBinary);
        }