November 2007 - Posts

Slično predhodnom postu, korišćenje XML Open SDK za čitanje komentara iz Word 2007 dokumeta.

Kôd (C#):

string comments;
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(@"C:\DocSaKomentarima.docx", true))
{
  MainDocumentPart mainPart = wordDoc.MainDocumentPart;
  CommentsPart commentsPart = mainPart.CommentsPart;

  using (StreamReader streamReader = new StreamReader(commentsPart.GetStream()))
  {
    comments = streamReader.ReadToEnd();
    MessageBox.Show (comments);
  }
}

// kraj primera

Da bi ovo radilo napravite nov Word dokument na lokaciji:
C:\DocSaKomentarima.docx i dodajte par komentara.

Rezultat je u var. comments i predstavlja XML prezentaciju komentara u dokumentu sa svim njihovim atributima.
Možda još malo XPath upita i možete izvući sve što vam je potrebno.

U sledećem primeru je prikazano kreiranje novog Word 2007 dokumenta pomoću Open XML SDK.

Prvo je potrebno da preuzmete i instalirate Microsoft SDK for Open XML Formats i u projektu referencirate:

  • Microsoft.Office.DocumentFormat.OpenXml
  • Windows.Base

Pisanje olakšavaju i sledeće using direktive:

  • using Microsoft.Office.DocumentFormat.OpenXml.Packaging;
  • using System.IO;
  • using System.Xml;

Kôd (C#):

const string wordNamespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";

using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(@"c:\TestDokument.docx", WordprocessingDocumentType.Document))
{
// Glavni deo dokumenta
MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
Stream stream = mainPart.GetStream();

XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
settings.Indent = true;

XmlWriter writer = XmlWriter.Create(stream, settings);
writer.WriteStartDocument(true);
writer.WriteStartElement("w", "document", wordNamespace);
writer.WriteStartElement("w", "body", wordNamespace);

writer.WriteStartElement("w", "p", wordNamespace); // paragraf
writer.WriteStartElement("w", "r", wordNamespace); // red
writer.WriteElementString("w", "t", wordNamespace, "Neki tekst"); //tekst
writer.WriteEndElement(); // end red
writer.WriteEndElement(); // end paragraf

writer.WriteEndElement(); // end body
writer.WriteEndElement(); // end doc
writer.Flush();
writer.Close();
}  
// otvori dokument
System.Diagnostics.Process.Start(@"c:\TestDokument.docx");
Application.Exit();
// kraj primera

Primer kreira Word 2007 dokument na c:\TestDokument.docx

Umesto "Neki tekst" probajte bilo šta drugo, na primer podatke iz baze i sl.

Posted by Milos.Milosavljevic | with no comments
Filed under: , ,

Kada programski kreirate Word 2007 dokument, neophodni minimum predstavljaju sledeći fajlovi:

  • [Content Types].xml
  • .rels
  • i document.xml

raspoređeni u folderima kao što je prikazano na slici.

document.xml naravno predstavlja sadržaj dokumenta.

Posle kreiranja ove strukture, potrebno je sve zipovati i promeniti ekstenziju u docx.


 

Nedavno je Microsoft publikovao set .NET klasa koje značajno olakšavaju rad sa Open XML formatom Office 2007 dokumenata.

Sada je veoma jednostavno pročitati, izmeniti i od nule programski kreirati Word, Excel i PowerPoint dokumente. Urađena je enkapsulacija postupaka koje smo ranije morali ručno da uradimo.

Radi na VS 2005 i naravno na VS2008.

Instalacija je veličine 2.8MB i možete je preuzeti ovde.

Da bi rezultat SELECT naredbe sortirali po slučajnom redosledu prilikom svakog poziva, zgodno je koristiti SQL Server funkciju  NEWID().

Za razliku od, na primer, funkcija RAND (..) i GETDATE(), funkcija NEWID() se procesira za svaki slog result seta.

Na primer:

SELECT *
FROM Person.Address
ORDER BY NEWID()

 Primene zamislite sami Geeked

Nedavno mi je trebalo da, zavisno od situacije, programski prebacim input language na ćirilicu ili latinicu.

Jedna linija koda:

InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.CultureInfo.CreateSpecificCulture("sr-Cyrl-CS"));

Za latinicu treba za kulturu uneti: "sr-Latn-CS"

Za US english: "en-US"

Posted by Milos.Milosavljevic | with no comments
Filed under: , ,