konto usunięte

Temat: C#, Word

Witam,
Zastanawiam się, czy jest możliwe stworzenie aplikacji w C#, która będzie w stanie otworzyć plik Worda (doc lub docx), wypełnić pola formularzy (jeśli wystąpią jakieś) i wydrukować. A to wszystko na komputerze bez zainstalowanego Worda?
Łukasz D.

Łukasz D. ITdoors.pl

Temat: C#, Word

Leszek Pietrzak:
Witam,
Zastanawiam się, czy jest możliwe stworzenie aplikacji w C#, która będzie w stanie otworzyć plik Worda (doc lub docx), wypełnić pola formularzy (jeśli wystąpią jakieś) i wydrukować. A to wszystko na komputerze bez zainstalowanego Worda?

Pewnie do tego celu musiałbyś użyc OWC...tyle ze aby móc korzystać z oprogramowania które wykorzystuje komponenty OWC musisz posiadac na dany komputer licencje na office.
Łukasz Skłodowski

Łukasz Skłodowski SharePoint
Architect, PM,
Właściciel -
Mavsystem

Temat: C#, Word

To zależy co chciałbyś osiągnąć konkretnie - zawartość plików w formacie docx bardzo łatwo modyfikować co pozwala własnie na zapisanie w nich jakichś dodatkowych danych, podmianę grafik (np. logo firmy), itp. Natomiast jeżeli musisz wyświetlić użytkownikowi zawartość pliku może udało by się wykorzystać openoffice? (ja np. w jednym z projektów wykorzystywałem openoffice jako konwerter doc2pdf).
Dawid Ireno

Dawid Ireno Software Architect

Temat: C#, Word

To może ja pomogę. Poniższy kod w C# zapisuje tekst do pliku.

object optional=System.Reflection.Missing.Value;
object visible=true;
object fileName="plik.doc";
object start=0;
Word.ApplicationClass app=new Word.ApplicationClass();
app.Visible=false;
app.Documents.Add(ref optional, ref optional, ref optional, ref visible);
app.ActiveDocument.Range(ref start, ref start).Text="Ala ma kota."; app.ActiveDocument.SaveAs(ref fileName, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional);
app.Quit(ref optional, ref optional, ref optional);
Dawid Ireno

Dawid Ireno Software Architect

Temat: C#, Word

A teraz machnijmy coś w Power Shell :-D Ten kod w PS listuje informacje o słownikach customowych Worda.

$objWord = New-Object -Com Word.Application
$colDictionaries = $objWord.CustomDictionaries
foreach ($objDictionary in $colDictionaries)
{
Write-Host "Name: " $objDictionary.Name
Write-Host "Language ID: " $objDictionary.LanguageID
Write-Host "Language-specific: " $objDictionary.LanguageSpecific
Write-Host "Location: " $objDictionary.Path
Write-Host "Read-only: " $objDictionary.ReadOnly
switch ($objDictionary.Type)
{
0 {Write-Host "Type: Spelling"}
1 {Write-Host "Type: Grammar"}
2 {Write-Host "Type: Thesaurus"}
3 {Write-Host "Type: Hyphenation"}
4 {Write-Host "Type: Spelling (complete)"}
5 {Write-Host "Type: Spelling (custom)"}
6 {Write-Host "Type: Spelling (legal)"}
7 {Write-Host "Type: Spelling (medical)"}
8 {Write-Host "Type: Hangual-Hanja Conversion"}
9 {Write-Host "Type: Hangual-Hanja Conversion (custom)"}
}
}
$objWord.Quit()
$colDictionaries = $null
$objWord = $null

A przykładowy wynik poniżej

Name: CUSTOM.DIC
Language ID: 0
Language-specific: False
Location: C:\Documents and Settings\Administrator\Application Data\Microsoft\UProof
Read-only: False
Type: Spelling (custom)
Name: WordDict.dic
Language ID: 0
Language-specific: False
Location: C:\My Documents\Work
Read-only: False
Type: Spelling (custom)
Dawid Ireno

Dawid Ireno Software Architect

Temat: C#, Word

A tutaj strzępek kodu drukujący przy pomocy Worda zawartość schowka.

object optional=System.Reflection.Missing.Value;
object save=false;
object visible=true;
object start=0;
Word.ApplicationClass app=new Word.ApplicationClass();
app.Visible=false;
app.Documents.Add(ref optional, ref optional, ref optional, ref visible);
app.ActiveDocument.Range(ref start, ref start).Paste();
app.ActiveDocument.PrintOut(ref optional, ref optional, ref optional, ref optional, ref optional, ref optional,ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional);
Thread.Sleep(5000);
app.Quit(ref save, ref optional, ref optional);

Manipulacja Word-em jest prosta i przyjemna. Dobra mykam. Na pewno dostęp do pól formularza też jest oprogramowany, wszystko jest, google i do dzieła:)

Pozdrawiam i życzę samych sukcesów:)



Wyślij zaproszenie do