Zum Inhalt springen

[.NET Interop] Excel03 Größeneinheiten?


Gateway_man

Empfohlene Beiträge

Guten Tag,

ich bekam vor geraumer Zeit folgendes Projekt zugeteilt:

Projekttitel: Berichtgenerator

Erstellen Sie eine Allgemeingültige Klasse, welche Excel Vorlagen mit Daten aus einer MSSQL Datenbank füllt (Die Positionierung wird durch Vorlagengruppen abhängige Bookmarks gesetzt).

Auf einige Konstrukte muss der User Einfluss nehmen können.

Beispielsweise wenn es sich um einen Tabelle handelt (sprich handelt es sich nur um eine Aufzählung oder um Rechnungsposten).

Das ganze muss wirklich so Allgemein gehalten werden wie nur möglich.

Zur Problematik:

Problem 1:

Sobald man meine bereits existierende Klasse Instanziert werden aus Zeitkritischen gründen mehrere Aufgaben in meherern Threads abgearbeiten.

Vor allem anderen wird per WMI die momentanen Konfigurationen aller registrierten und auffindbaren Drucker abgerufen.

Ist das getan, wird dem User ein Dialog gezeigt, wo dieser den für die aktuelle selektierte Vorlage zu nutzenden Durcker auswählt.

Das überprüfen der Drucker dauert auf dem Entwicklerrechner satte 5 Sekunden (Bei 5 Verfügbaren Druckern).

Definitiv zu lange. Kennt jemand einen schnelleren Weg als den meinen. Ich gehe über die PrinterConfigurations der WMI.

Problem 2:

Da der Drucker Variable sein soll muss ich auch davon ausgehn, dass das momentan eingestellte Blattformat unterschiedlich ist.

Diese Information ist für mich nicht ganz unerheblich, da ich mich ja auch um die Seitenumbrüche in Excel kümmern muss.

Wegen möglichen Bereichen, die sich auf jeder Seite am Anfang wiederholen sollen.

Mein Gedanke war:

Da ich die momentane eingestellte größe des Papiers des für die Aufgabe selektierten Drucker bereits habe, wollte ich

zwei Schleifen starten. Die eine Arbeitet die zurückgegeben Rows der Datenbank ab, die andere vergleicht die momentan erreichte höhe

mit der Maximalhöhe des Papiers (in zehntel mm).

Jedoch gestaltet sich das als etwas größeres Problem, da mir Excel per Rangeobjekt eine Größeneinheit zurückliefert die ich nicht kenne.

In der MSDN steht leider auch nicht welche Einheit die Funktion [range].Cells.ColumnWidth zurückgibt.

Ich habe nur von einer sehr obskure Größeneinheit gehört. Siehe Hier.

Demnach würde sich die Spaltenbreite nach der Standartschriftgröße Orientieren?!

Wenn das jemand wüsste wäre mir sehr geholfen.

Lg

Gateway

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier findest Du den Thread, den ich zum Thema in der MSDN aufgemacht habe:

Column Width - how many characters possible?

Es gibt bereits zwei Vorschläge:

Possibility one: Use Courier instead of Arial. The Courier-font is linear

Possibility two: use something like Graphics.MeasureString (C-Sharp) to estimate the size in pixels.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...