Laden...
F
Fenixx myCSharp.de - Member
Azubi Fachinformatiker-Anwendungsentwicklung Dortmund Dabei seit 05.10.2006 15 Beiträge
Benutzerbeschreibung

Forenbeiträge von Fenixx Ingesamt 15 Beiträge

25.06.2008 - 11:19 Uhr

Hallo zusammen,

ich habe folgendes Problem:

Ich habe vor einen Zugriff auf den Bugzilla-Webservice in Java zu schreiben. Das Problem dabei ist, dass zu diesem Webservice keine WSDL-Datei existiert.

Hmm, ok dachte ich. Nach einiger Zeit der Recherche bin ich auf bugzproxy gestoßen.

Dies sollte eine Schnittstelle zu dem Webservice darstellen. Ich frage mich nun: Woher weiß diese Schnittstelle, welche Klassen und Methoden dieser Webservice anbietet? Schließlich existiert keine WSDL-Datei.... .

Diese Frage stelle ich mir, weil ich genau solch eine Schnittstelle wie bugzproxy in Java realisieren muss.

Habt ihr bereits Erfahrungen mit der Schnittstelle? Habt ihr vielleicht irgendwelche Tipps wie man dort am besten vorgeht?

Ich weiß, dass der Webservice von Bugzilla in Perl geschrieben ist. Allerdings bräuchte man eine einheitliche Schnittstelle für nahezu jede Programmiersprache, um auf den Webservice zugreifen zu können.

Über Anregungen jeder Art würde ich mich freuen.

Gruß

18.10.2006 - 08:12 Uhr

Es lag am Aufbau des GetOleDbSchemaTable, dieser muss wie folgt lauten:

lTableNames = mConnection. GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[]{null, null, null, "TABLE"});
15.10.2006 - 22:52 Uhr

Moin zusammen,

ich habe folgendes Problem beim Importieren von Daten mittels OLEDB:
Ich möchte innerhalb einer Webanwendung dem Benutzer das Importieren von Daten ermöglichen. Der Benutzer soll dabei eine Excel-Tabelle verwenden, in der die Daten enthalten sind. Folgende Klasse wird hierbei verwendet. Dabei möchte ich zuerst einmal nur die Daten aus der Excel-Tabelle auslesen und in eine ArrayList packen. Ich verwende hierbei VS 2003. Aufbau der Klasse:

using System;
using System.IO;
using System.Collections;
using System.Collections.Specialized;
using System.Text;
using System.Data.SqlClient;
using System.Data.OleDb;
using cnm.ausbildung.buecher.system;
namespace cnm.ausbildung.buecher.system
{
	/// <summary>
	/// Zusammenfassung für Importieren.
	/// </summary>
	public class Importieren: DatenbankFunktionen
	{

    public static string msConnString = "Data Source={0};Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0";
    public OleDbConnection mConnection = new OleDbConnection((string.Format(msConnString, "D:\\Test\\importieren.txt"))); 


    // Nur die Spalten in der Tabelle tabBuecher werden angegeben
		public Importieren():base(new string[]{"ISBN_10", "ISBN_13", "Titel", "Erscheinungsdatum", "Verlag", "Sprache", "Rubrik", "Auflage", "Kaufpreis", "Bewertung", "Kommentar", "Seitenanzahl"}, "tabBuecher")
		{
			//
			// TODO: Fügen Sie hier die Konstruktorlogik hinzu
			//
		}
    
    public ArrayList SelectData (string lsFileName)
    { 
     ArrayList lsaImportData = new ArrayList(); 
      try
      {
        mConnection.Open();
        System.Data.DataTable lTableNames = new System.Data.DataTable("Selektion");
        lTableNames = mConnection.GetOleDbSchemaTable(Guid.NewGuid(), null);
        string lsTabellenname = msTabellenname;
        // AN WELCHER STELLE IN DER DATATABLE WERDEN DIE TABELLENNAMEN REINGESCHRIEBEN?
        string lsSelect = "SELECT * FROM "+lTableNames;
      
        OleDbCommand Prozedur = new OleDbCommand(lsSelect, mConnection);
        OleDbDataReader lDataReader = Prozedur.ExecuteReader();
        // Anweisung
        while (lDataReader.Read())
        {
          lsaImportData.Add(lDataReader["ISBN_10"]);
          lsaImportData.Add(lDataReader["ISBN_13"]);
          lsaImportData.Add(lDataReader["Titel"]);
          lsaImportData.Add(lDataReader["Erscheinungsdatum"]);
          lsaImportData.Add(lDataReader["Verlag"]);
          lsaImportData.Add(lDataReader["Sprache"]);
          lsaImportData.Add(lDataReader["Rubrik"]);
          lsaImportData.Add(lDataReader["Auflage"]);
          lsaImportData.Add(lDataReader["Kaufpreis"]);
          lsaImportData.Add(lDataReader["Bewertung"]);
          lsaImportData.Add(lDataReader["Kommentar"]);
          lsaImportData.Add(lDataReader["Seitenanzahl"]);
          lsaImportData.Add(lDataReader["Autor"]);
        }
        
      }
      catch (Exception ex)
      {
        mConnection.Close();
        
      }
      mConnection.Close();
      
      return lsaImportData;
    }

Aufruf der Klasse in der Webanwendung:

if (Request.Files != null && Request.Files.Count > 0)
      {
        HttpPostedFile lPostedFile = Request.Files[0];
        if (lPostedFile.ContentType.Equals("application/vnd.ms-excel"))
        {
          // So soll die Datei später heißen
          string lsFileName = "D:\\Test\\importieren.txt";
          // Byte-Array, welches in die Datei geschrieben werden soll
          byte[] lbFileData = new byte[lPostedFile.ContentLength];
          // Schreiben des Byte-Arrays
          lPostedFile.InputStream.Read(lbFileData,0,lPostedFile.ContentLength);
          // FileStream erstellen, um die Datei schreiben zu können
          FileStream lFileStream = new FileStream(lsFileName, FileMode.Create);
          //Byte-Array in die Datei schreiben
          lFileStream.Write(lbFileData,0,lbFileData.Length);
          //FileStream freigeben und löschen
          lFileStream.Flush();
          lFileStream.Close();
     
          Importieren lImportieren= new Importieren();
          ArrayList lsImport = new ArrayList();
          lsImport = lImportieren.SelectData(lsFileName);
          lImportieren.InsertBuch(lsImport);
          lImportieren.InsertAutor(lsImport);
          MessageBox.Show("Ihre Daten wurden erfolgreich in die Datenbank eingefügt");}
}

Der User importiert die Daten also über einem FileUpload.
Anschließend erscheint mir folgende Fehlermeldung: GetOleDbSchemaTable wird von OLEDB 4.0 nicht unterstützt.
Weil ich trotz Internet- und Forenrecherche nicht weitergekommen bin, wende ich mich an euch.
Liegt an dem Connection-String, oder woran?

Um eine Antwort wäre ich euch sehr dankbar.

Gruß
Fenixx

06.10.2006 - 11:22 Uhr

Deine Vergehensweise ist dazu noch einfacher. 😁

06.10.2006 - 11:12 Uhr

Alles über Odbc eine Excel-Datei schreiben.

06.10.2006 - 10:59 Uhr

Original von joerguth
Jetzt solls auch noch hübsch werden 🙂

Du kennst doch die Ausbilder mit ihren Sonderwünschen.^^

Gruß
Daniel

06.10.2006 - 10:09 Uhr

Das funktioniert soweit.
Ich frage mich nur, wie ich die Spaltenbreite für jede Spalte individuell festlegen kann.

Gruß
Daniel

06.10.2006 - 08:07 Uhr

Es ist also dann auch möglich, den Inhalt der Excel-Tabelle variabel zu gestalten oder?
Lässt sich die Excel-Tabelle dann auch per HTML anzeigen?

Gruß
Daniel

06.10.2006 - 07:39 Uhr

Guten Morgen Jörg,

ist es denn nicht vielleicht möglich, die Spalten der Tabelle schon vorher "per Hand" zu definieren und diese dann auf dem Server abzuspeichern?
Anschließend soll HTML die abgespeicherte Datei verwenden und dort das DataTable reinpacken und in der Webanwendung als Excel-Datei anzeigen.
Für meine Zwecke sollte das reichen, da lediglich der Inhalt der Zeilen sich verändert und nicht die Anzahl der Spalten.

Ich bitte um deine Meinung.

Gruß
Daniel

05.10.2006 - 23:03 Uhr

Nochmal vielen Dank für deine Hilfe, ich werd das mit den SpreadsheetML mal ausprobieren.

Gruß
Daniel

05.10.2006 - 14:16 Uhr

Lassen sich damit denn auch Zellenformate für bestimmte Spalten wie z.B. Zahlen definieren?

05.10.2006 - 10:54 Uhr

Super hat so geklappt.
Vielen Dank für schnelle und kompetente Hilfe. Ist tatsächlich einfacher als man denkt.
Die Sache hab ich nur im (!IsPostBack) eingebunden.

Vielen Dank nochmal.

05.10.2006 - 10:04 Uhr

An welcher Stelle muss ich dann die DataTable einfügen (bezogen auf dein Beispiel)?
Muss die Excel-Datei dann bereits bestehen oder wird diese dann neu erzeugt?
Sry, bin noch ein totaler Noob.^^

Vielen Dank nochmal^^.

05.10.2006 - 09:00 Uhr

Bei der Webansicht soll die Excel-Datei direkt im Browser angezeigt werden. Das sollte nicht das Problem sein, wenn ich in meiner Klasse vorher ein Byte-Array erzeugt habe. Da dies für ein Bücherprojekt vorgesehen ist, ich die Übersicht aller vorhandenen Bücher in eine Excel-Datei exportieren möchte und eben diese Übersicht sich ständig ändert, hatte ich vor, in der Klasse ein Byte-Array zu erzeugen.

Kannst du mir vielleicht ein Code-Beispiel dafür geben? Ich verzweifel schon langsam.

05.10.2006 - 08:21 Uhr

Guten Morgen, ich habe folgendes Problem:

Ich möchte ein DataTable in eine Excel-Tabelle exportieren, dabei soll es dem Benutzer möglich sein die Excel-Tabelle nach Ausführen der Excelexport-Klasse, über einen Buttton bespielsweise, in der Webanwendung anzusehen.
Mein Grundgedanke war, dass die Klasse einen Rückgabetyp vom Typ byte[] zurückliefert, den ich dann über ein Response.BinaryWrite in die Excel-Datei umwandle. Die ähnliche Vorgehensweise habe ich für einen PDFConverter bereits implementiert und funktioniert fehlerlos. Ich verwende Visual Studio 2003. Hier nur der Aufruf der Klasse(PDFConverter):


private void lblExportPDF_Click(object sender, System.EventArgs e)
{
Buch lPDFConverter = (Buch)Session["Buch"];
PDFConverter testConverter = new PDFConverter(lPDFConverter.DataTable);
byte[] lbPDFBytes = testConverter.render();

string lsDateiname = "Uebersicht.pdf";
string lsDatei = "D:\\Test\\"+lsDateiname;
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.BinaryWrite(lbPDFBytes);
Response.Flush();
Response.End();

Session["Buch"] = lPDFConverter;
}

So weit so gut. Natürlich habe ich mich auch schon über eine mögliche Lösung informiert. Dabei bin ich auf folgenden Link gestoßen:
http://support.microsoft.com/?id=306023

Auch die PIAs habe ich in meinem Projekt verwendet als Verweis eingebunden: http://www.microsoft.com/downloads/details.aspx?FamilyId=C41BD61E-3060-4F71-A6B4-01FEBA508E52&displaylang=en

Doch dies hat mir bisher nicht geholfen. Das Beispiel auf der Microsoft-Seite führt bei mir zu einem Konvertierungsproblem:

Hier der Codeausschnitt:


using System;
using System.Data.SqlClient;
using System.Collections.Specialized;
using cnm.ausbildung.buecher.system;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;

private Excel.Application m_objExcel = null;
.
.
.
m_objExcel = new Excel.Application();


Dies führt zu folgendem Fehler:
Implizite Konvertierung des Typs 'Excel.Application' zu 'Microsoft.Office.Interop.Excel.Application' nicht möglich.

Ich bin im Moment einfach ratlos, wie ich ein DataTable in eine Excel-Tabelle exportiere, so dass der User diese auch in der Webanwendung direkt ansehen kann.
Kann mir vielleicht jemand mit einem Codeausschnitt helfen? Darüber wäre ich sehr dankbar.

Gruß
Daniel