Entwickler-Ecke

WinForms - Vordrucke füllen


Talemantros - Fr 27.03.15 23:55
Titel: Vordrucke füllen
Guten Abend zusammen,
dank eurer Hilfe war es mir möglich einige Zeit mich mit dem erlernten Wissen und einer guten Suchmaschine weiter zu helfen.
Danke erst mal dafür.

Jetzt komme ich an den Punkt an dem ich das erste Mal Vordrucke füllen will.
Entweder Word über Textmarken oder Excel bestimmte Zellen.

Das gefüllte Dokument möchte ich dann als PDF auf der Platte speichern bzw. vllt in der MySQL Datenbank ablegen.

Hierzu finde ich gefühlt irgendwie nicht so gute Infos.

Kann mir hier jemand helfen?
Ich hatte eine "fertige" DLL gefunden, allerdings für WPF.

Würde mich über Hilfe und Anregungen freuen.

Danke

Gruß
Daniel


Th69 - Sa 28.03.15 10:54

Hallo,

ich kann dir nur ein paar generelle Infos geben:
- das Stichwort dazu lautet "Office Automatisierung" (bzw. "office automatisation")
- Automatisieren von Office-Anwendungen [https://msdn.microsoft.com/de-de/library/aa288651%28v=vs.71%29.aspx]
- unter [FAQ] Office (Word, Excel, Outlook, ...) in eigenen Anwendungen verwenden [http://www.mycsharp.de/wbb2/thread.php?threadid=19410] gibt es einen Einstieg und weitere Links dazu (auch wenn die FAQ schon einige Jahre alt ist, sollte sich generell nicht so viel geändert haben)

Die wichtige Frage ist aber, ob Word und Excel auf dem Rechner installiert ist oder ob du nur direkt die XML-Dateien (docx, xlsx) verarbeiten möchtest?

Das Erzeugen einer PDF daraus ist dann ein weiterer unabhängiger Schritt davon.


Talemantros - So 29.03.15 15:44

Hallo,
danke für die Links.
Da werde ich mich schlau machen.

Danke

Excel und Word ist auf den Rechnern installiert. Unter dem Unterschied nur die XML zu bearbeiten kann ich mir bisher nichts vorstellen.

Gruß
Daniel


Ralf Jansen - So 29.03.15 16:30

Zitat:
Ich hatte eine "fertige" DLL gefunden, allerdings für WPF.


Aus Neugier. Word, Excel, PDF, MySql sind alles externe Systeme die sich um Daten kümmern bzw. Datenformate darstellen. Nichts davon hat Abhängigkeiten zu irgendeiner UI oder speziellen UI Techniken. Was sollte das für eine Dll sein die Probleme mit den oben genannten Systemen löst UND Abhängigkeiten zu WPF hat? Macht irgendwie gar keinen Sinn :gruebel:


Talemantros - So 29.03.15 21:26

Hallo Ralf,
Weiß leider nicht mehr wo das war, es stand halt wpf dabei daher hatte ich es ignoriert.

Gruß
Daniel


Talemantros - Mo 30.03.15 15:01

Hallo,
also habe mittlerweile ein wenig was geschafft.
Datei öffnen und anzeigen etc. geht.
Datei füllen auch genauso wie Datei schließen mit Speichern.

Wenn ich das ganze nach PDF bringen will, gibt es dann dort was aus .net selber oder muss ich dazu von einem Drittanbieter etwas einbinden?

Danke

VG

Mal so zum drüber schauen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
    public class ExcelMethods
    {
         private static Excel.Application xlApp;
         private static Excel.Workbook xlWb;
         private static Excel.Worksheet xlWs;
         private static object misValue = Missing.Value;
        
        public static void OpenExcelFile(string file)
        {
            xlApp = new Excel.Application();
            xlWb =  xlApp.Workbooks.Open(file, 0true5""""true, Excel.XlPlatform.xlWindows, "\t"falsefalse0true10);
            xlWs = (Excel.Worksheet)xlWb.Worksheets[1];
        }

        public static void WriteDataToExcelFile(string data, long row, long column)
        {
            xlWs.Cells[row, column] = data;
        }

        public static void ShowExcelFile(bool show)
        {
            xlApp.Visible = show;
        }

        public static void CloseExcelFile()
        {
            xlWb.Close(true, misValue, misValue);
            xlApp.Quit();

            releaseObject(xlWs);
            releaseObject(xlWb);
            releaseObject(xlApp);
        }

        private static void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception)
            {
                obj = null;
            }
            finally
            {
                GC.Collect();
            }
        } 
    }


Ralf Jansen - Mo 30.03.15 15:25

.Net nicht aber Office/Excel. Guckst du ExportAsFixedFormat [https://msdn.microsoft.com/de-de/library/microsoft.office.tools.excel.worksheet.exportasfixedformat.aspx]


Talemantros - Di 31.03.15 11:37

Vielen Dank für die Richtung.


C#-Quelltext
1:
2:
3:
4:
        public static void SaveExcelFile(string path)
        {
            xlWb.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF, path, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
        }


Gruß