Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[.NET Interop] Excel03 Größeneinheiten?

Empfohlene Antworten

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

Warum Excel die Spaltenbreite in "Zeichen" angibt wird hier erklärt:

Understanding Column Widths (Microsoft Excel)

This used to mean something very understandable in the "olden days" before proportional fonts came on the scene.
:rolleyes:

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.