3 Stimmen

Wie erstellt man ein Excel-Arbeitsblatt mit VB6 ohne das Excel-Objekt?

Ich wurde vor kurzem mit der Aktualisierung einer VB6-Datenerfassungs-App beauftragt, um die Möglichkeit hinzuzufügen, Excel-Berichte zu erstellen und sie über die App zu drucken (beides muss auf demselben Computer erfolgen). Normalerweise wäre das kein Problem, ich habe Excel-Berichte mit VB6 erstellt, bevor ich das Excel-Objekt verwendet habe.

Ich habe also die Änderungen programmiert und präsentiert, und dann wurde mir gesagt, dass auf dem Rechner, auf dem das Programm installiert werden soll, keine vollständige Excel-Kopie vorhanden ist und ich mir eine andere Lösung ausdenken muss.

Ich habe versucht, Dateien mit Trennzeichen (Komma oder Text) zu erstellen, aber wenn diese Dateien mit Excel geöffnet werden, werden sie nicht richtig formatiert, d. h. wenn eine Zelle 20 Zeichen hat, wird die Hälfte der Zeichen aufgrund der festen Zellgröße abgeschnitten.

Ich habe noch ein paar Ideen:

1) Ich weiß, dass Openoffice eine API hat. Kann diese API verwendet werden, um eine richtig formatierte Excel-Datei zu erzeugen? Gibt es ein COM-Objekt, das ich verwenden kann?

2) Ich habe dieses Tool gefunden: http://www.carlosag.net/Tools/ExcelXmlWriter/ Es wurde jedoch in VB.NET geschrieben. Kann ich dieses Tool auch in VB6 verwenden?

Ich bin wirklich ratlos und weiß nicht, in welche Richtung ich als nächstes gehen soll. Hat jemand eine Idee bezüglich der oben genannten Utensilien? Ich bin auch offen für alle anderen Vorschläge/ bessere Methoden. Alles, was mir bei der Bewältigung dieser Aufgabe helfen könnte, wäre mir sehr willkommen!

HINWEIS: Die Excel-Version, die zum Anzeigen dieser Berichte verwendet wird, ist Excel 2007

4voto

Joel Coehoorn Punkte 377088

Schauen wir uns diese beiden Anforderungen einmal an:

die Möglichkeit hinzufügen, Excel-Berichte zu erstellen und drucken Sie sie über die App aus.

y

der Rechner, auf dem dieses Programm installiert wird, verfügt nicht über eine vollständige Kopie von Excel

Wenn ich Sie nicht missverstehe, scheinen sich diese beiden Aspekte gegenseitig auszuschließen. Wenn Sie meinen, dass Sie die Berichte nur auf einem Rechner erstellen und sie anderswo angezeigt und gedruckt werden sollen, könnten Sie versuchen, Folgendes zu verwenden SpreadSheetML .

Seien Sie vorsichtig, wenn Sie nach zusätzlichen Informationen über SpreadSheetML googeln: Es gibt eine Los Es gibt viele Fehlinformationen, die SpreadSheetML mit dem neuen Xml-Format verwechseln, das für Excel in Office 2007 verwendet wird. SpreadSheetML funktioniert bereits in OfficeXP und in eingeschränktem Maße auch in Office 2000.

1voto

Will Rickards Punkte 2748

Sie können Exceldateien als HTML speichern. In einer Webanwendung, die ich geschrieben habe und die Daten als Excel exportieren musste, habe ich einfach eine HTML-Datei erstellt, wie sie Excel exportiert. Dann habe ich sie als application/vnd.ms-excel bereitgestellt. Excel öffnete sie problemlos. Sie können wahrscheinlich etwas Ähnliches tun.

Sie können auch eine Bibliothek wie die von Ihnen verlinkte finden, die das neue Office-Dateiformat direkt schreibt, da es sich meiner Meinung nach um Derivate von xml handelt.

1voto

shahkalpesh Punkte 32505

Erstellen Sie die CSV-Datei wie gewohnt.

Lassen Sie Ihre Desktop-Anwendung die Formatierung auf dem Rechner vornehmen, auf dem XLS-Dateien verfügbar sind, bevor sie gedruckt wird.

0voto

RS Conley Punkte 7136

Wenn Sie bereit sind, mit der Installation der .NET-Laufzeitumgebung zu leben, können Sie die Bibliothek in Option 2 mit einer COM-exponierten .NET-Klasse umhüllen. Die Klasse übergibt lediglich Aufrufe an ExcelXMLwriter.

Die Alternative wäre, den XML-Standard zu studieren und einen eigenen Writer zu schreiben, aber das wäre wahrscheinlich zu viel für das Projekt.

Was OpenOffice betrifft, sehen Sie sich das an aquí . Insbesondere der VBA-Abschnitt auf dieser Seite aquí . Es scheint eine COM-Komponente zu geben, die Sie verwenden können.

0voto

onedaywhen Punkte 52850

Es ist möglich, eine Excel-Arbeitsmappe auf einem Rechner zu erstellen, auf dem Excel nicht installiert ist**, indem man eine Jet-Verbindung - eine beliebige Jet-Verbindung - verwendet, um eine SQL DML oder eine "Make Table Query" auszuführen. CREATE TABLE SQL DLL, wenn es sich bei der betreffenden Tabelle um eine Excel-Tabelle handelt, z. B. dieser VBA-Code:

Dim cat
Set cat = CreateObject("ADOX.Catalog")
With cat  

  ' Create a new Jet .mdb
  .Create _
      "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & _
      Environ$("temp") & "\DropMe.mdb"
  ' Use .mdb's Jet connection to create an Excel table
  ' (will create a new workbook to contain it)
  .ActiveConnection.Execute _
     "CREATE TABLE" & _
     " [Excel 8.0;HDR=NO;Database=C:\db.xls;].[Sheet1]" & _
     " (col FLOAT);"
End With

Jet ist eine veraltete Windows-Komponente, die auf Windows-Rechnern vor Vista allgegenwärtig ist und weiterhin kostenlos von MS über MDAC heruntergeladen werden kann.

Das heißt, "um sie über die [Excel]-App zu drucken", brauchen Sie eindeutig die Excel-App!

** Ich denke, das ist möglich: Ich kann keinen Rechner ohne Excel finden, auf dem ich es testen kann!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X