Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Ahrimaan
Thema: jegliche Excel Datei öffnen
Am im Forum: Datentechnologien

zB mit einem OpenFileDialog

Dort kannst du mehrere Dateien auswählen.

Du musst diese dann nur noch in einer Schleife durchlaufen und den Connectionstring jeweils anpassen nzw. die Variable ersetzten.

Grüße

Thema: [Erledigt] Excel 2007 XML : Leseproblem
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: XML Excel 2007

Hallo zusammen,

ich lese zu Fuß die XML Daten in einem XLSX Dokument.
Klappt EIGTL. ganz gut bis auf folgendes Phänomen :

Ich kann nicht auf die Subelemente zugreifen weils einfach keine gibt Oo

Im Anhang seht ihr den Aufbau der jeweiligen Row bzw. Cell
Und den passenden Fehler.
Unten seht ihr meinen XMl Lesenden Code.

Jmd ne Idee ?

Grüße

var workbookname = GetWorkbookName(doc.Element("worksheet").Element("pageSetup").Attribute("r" + 0x3A + "id").Value);
            var rows = GetExcelRows(from i in doc.Element("worksheet").Element("sheetData").Elements("row") select i);

 private ExcelCell GetExcelCell(XElement xmlElement)
        {
            var column = GetColumnName(xmlElement.Attribute("r").Value);
            var value = xmlElement.Attribute("t") != null
                            ? _sharedStrings[int.Parse(xmlElement.Element("v").Value)]
                            : string.Empty;
            var formula = xmlElement.Attribute("f") != null
                            ? xmlElement.Attribute("f").Value
                            : string.Empty;
            return new ExcelCell(GetColumnIndex(xmlElement.Attribute("r").Value),column,value,formula);
        }

Thema: (Excel-)Spalten-Überschriften in Nummer der Spalte umrechnen (z.B. "AA" ==> 27)
Am im Forum: Rund um die Programmierung

Hi Zero,

ich schlage mich mit WCF n tier sachen etc. rum aber DAS habe ich nicht drauf :-(
Danke für den Hinweis

Grüße

Thema: (Excel-)Spalten-Überschriften in Nummer der Spalte umrechnen (z.B. "AA" ==> 27)
Am im Forum: Rund um die Programmierung

Danke für die Denkanstöße :-)

Grüße

Thema: (Excel-)Spalten-Überschriften in Nummer der Spalte umrechnen (z.B. "AA" ==> 27)
Am im Forum: Rund um die Programmierung

Hallo zusammen,

stehe grad aufm dem Schlauch :

Für meine Excelwrapperklasse brauche ich eine Methode
die mir zB aus den Buchstaben AA = 27 ausgibt.

Also quasi das Alphabet hochzähl.

Nur wie gesagt fällt mir grad gar keine Idee ein :-(

Grüße

Thema: Gesucht: Gutes Buch über TDD mit Beispielen etc.
Am im Forum: Buchempfehlungen

Hi m0rius,

das finde ich persl. nicht schlimm , wenn man weiß wie man gute Unit Tests schreibt kann man sich den erst auch herleiten.

Zumindest sollte man das meinen ;-)

Grüße

Thema: Gesucht: Gutes Buch über TDD mit Beispielen etc.
Am im Forum: Buchempfehlungen

http://www.amazon.de/Art-Unit-Testing-Deutsche-Ausgabe/dp/3826690230/ref=sr_1_fkmr0_1?ie=UTF8&qid=1293527455&sr=8-1-fkmr0

Hat damit schon jdm Erfahrungen ?

Grüße

Thema: Gesucht: Gutes Buch über TDD mit Beispielen etc.
Am im Forum: Buchempfehlungen

Hi,

fixed ja meine TDD :-)

Thema: Gesucht: Gutes Buch über TDD mit Beispielen etc.
Am im Forum: Buchempfehlungen

Hallo zusammen,

nun soll bei uns ENDLICH mal mit TDD ab Januar angefangen werden in der Firma.
Da es im Netz zwar viele Beispiele gibt aber mein Chef einfach zu faul ist die Links zu klicken, suchen wir ein gutes Buch um es Ihm mal zur Verfügung zu stellen.

Jmd ne gute Empfehlung ?

Grüße

EDIT : Fixed

Thema: Ich suche ein DBI (Database-Interface), welches ist das richtige?!
Am im Forum: Datentechnologien

Hi,

wenn du den Programmierer nicht mit dem DB System behelligen willst,

würde ich dir vorschlagen zusätzlich EF CodeFirst anzuschauen. Nützlich dazu auch der AutoMapper.

Grüße

Thema: Fremde .NET Anwendung steuern
Am im Forum: Rund um die Programmierung

Hi,

ich kann per Reflection ja DLLs usw. auslesen.
Was ich aber bisher nicht gefunden habe ist in einem laufendem Prozess eine Methode
auszulösen.

Nach meinem wissen war es tatsächlich nur für Metaprogrammierung aber nicht um fremde laufende Prozesse zu steuern oder ?

Grüße

Thema: Fremde .NET Anwendung steuern
Am im Forum: Rund um die Programmierung

Genau das habe ich gesucht , Danke !

Thema: Fremde .NET Anwendung steuern
Am im Forum: Rund um die Programmierung

Hallo zusammen,

ich muss (leider) in einem Projekt eine fremde .NET Anwendung steuern.
Nun meine Frage : Wie löse ich das am besten ?
Bei Sendkeys kriege ich bauschmerzen.

Komme ich evtl. per Reflection an die Methoden etc ran ? Per Reflector kann ich diese ja auch auslesen .
Hat jmd dafür Codesnippets oder Links ?

Danke für eure Hilfe

Grüße

Thema: Excel 2003 Datei : Einlesen in DataTable
Am im Forum: Office-Technologien

Ok dann nehme ich lieber die Lösung

Dank dir !

grüße

Thema: Excel 2003 Datei : Einlesen in DataTable
Am im Forum: Office-Technologien

Es gibt ja die möglichkeit über ein Kommandozeilentool eine 2003er Datei zu einer 2007er xlsx. zu machen.
Diese könnte ich ja per XML einlesen
Stehen denn da die Formeln drin ?

Grüße

Thema: Excel 2003 Datei : Einlesen in DataTable
Am im Forum: Office-Technologien

Hallo zusammen,

neues Problem :

Wenn ich mir eine Exceldatei einlese kriege ich nur leere Felder, Formeln werden NICHT gelesen. Bedeutet das, das ich wirklich über das hässliche COM gehen muss ?

Grüße

Thema: Excel 2003 Datei : Einlesen in DataTable
Am im Forum: Office-Technologien

Kann geclosed werden,

durch beschränken der Spalten auf max 256 wurde das Problem erledigt.
Das ist auch die Interne Grenze unserer Excelfiles :-)

Grüße

Thema: Excel 2003 Datei : Einlesen in DataTable
Am im Forum: Office-Technologien

Hallo,

wenn ich weniger Selektiere klappt es.
Das Problem ist die Dateien können bis zu 130 Spalten haben und bis zu xxx Zeilen.
Es ist also recht dynamisch das ganze.

Grüße

Thema: Excel 2003 Datei : Einlesen in DataTable
Am im Forum: Office-Technologien

Hallo zusammen,

ich lese über OleDb eine Exceldatei ein.
Leider wird beim ExecuteReader ein Fehler geworfen :
(Siehe Anhang)

So , wie umgehe ich nun dieses Problem ?
Kann der DataReader etwas nicht mit so vielen Felder umgehen ?

Grüße

Thema: Workflow Foundation - Für was nutzt Ihr das
Am im Forum: Rund um die Programmierung

Hi,

wir nutzen WF um in unserer Software :
Die Software ist eine ACD Anlage und da ist die WF prädestiniert dafür.

Grüße

Thema: MP3 VBR/CBR auslesen
Am im Forum: Grafik und Sound

DA ^^

 public class Mp3Header
    {
        // Public variablen
        public int intBitRate;
        public string strFileName;
        public long lngFileSize;
        public int intFrequency;
        public string strMode;
        public int intLength;
        public string strLengthFormatted;

        // Private Variablen
        private ulong bithdr;
        private bool boolVBitRate;
        private int intVFrames;

        public bool ReadMP3Information(string FileName)
        {
            FileStream fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
            // Setze Dateinamen ohne Pfad
            strFileName = @fs.Name;
            char[] chrSeparators = new char[] { '\\', '/' };
            string[] strSeparator = strFileName.Split(chrSeparators);
            int intUpper = strSeparator.GetUpperBound(0);
            strFileName = strSeparator[intUpper];

            strFileName = strFileName.Replace("'", "''");

            // Setze Dateilänge
            lngFileSize = fs.Length;

            byte[] bytHeader = new byte[4];
            byte[] bytVBitRate = new byte[12];
            int intPos = 0;

            // Lese die ersten 4 Bits um zu prüfen ob es eine MP3 ist
            do
            {
                fs.Position = intPos;
                fs.Read(bytHeader, 0, 4);
                intPos++;
                LoadMP3Header(bytHeader);
            }
            while (!IsValidHeader() && (fs.Position != fs.Length));

            //Wenn die Streamposition = der Länge ist ist es KEINE Gültige MP3
            if (fs.Position != fs.Length)
            {
                intPos += 3;

                if (getVersionIndex() == 3)    // MPEG Version 1
                {
                    if (getModeIndex() == 3)    // Single Channel
                    {
                        intPos += 17;
                    }
                    else
                    {
                        intPos += 32;
                    }
                }
                else                        // MPEG Version 2.0 or 2.5
                {
                    if (getModeIndex() == 3)    // Single Channel
                    {
                        intPos += 9;
                    }
                    else
                    {
                        intPos += 17;
                    }
                }

                // Pürfe ob die Datei eine Variable Bitrate hat
                fs.Position = intPos;
                fs.Read(bytVBitRate, 0, 12);
                boolVBitRate = LoadVBRHeader(bytVBitRate);

                // Wenn die Datei gelesen wurde übergib die daten an die Public Variablen
                intBitRate = getBitrate();
                intFrequency = getFrequency();
                strMode = getMode();
                intLength = getLengthInSeconds();
                strLengthFormatted = getFormattedLength();
                fs.Close();
                return true;
            }
            return false;
        }

        private void LoadMP3Header(byte[] c)
        {
            // c[0] = 00000011
            // c[1] = 00001100
            // c[2] = 00110000
            // c[3] = 11000000
            // Dieser Operator << bedeutet Das wir die Bits in diese Richtung schieben
            // 00000011 << 24 = 00000011000000000000000000000000
            // 00001100 << 16 =         000011000000000000000000
            // 00110000 << 24 =                 0011000000000000
            // 11000000       =                         11000000
            //                +_________________________________
            //                  00000011000011000011000011000000
            bithdr = (ulong)(((c[0] & 255) << 24) | ((c[1] & 255) << 16) | ((c[2] & 255) << 8) | ((c[3] & 255)));
        }

        private bool LoadVBRHeader(byte[] inputheader)
        {
            //Bei einer Variablen Bitrate wird XING ausgegeben
            if (inputheader[0] == 88 && inputheader[1] == 105 &&
                inputheader[2] == 110 && inputheader[3] == 103)
            {
                int flags = (int)(((inputheader[4] & 255) << 24) | ((inputheader[5] & 255) << 16) | ((inputheader[6] & 255) << 8) | ((inputheader[7] & 255)));
                if ((flags & 0x0001) == 1)
                {
                    intVFrames = (int)(((inputheader[8] & 255) << 24) | ((inputheader[9] & 255) << 16) | ((inputheader[10] & 255) << 8) | ((inputheader[11] & 255)));
                    return true;
                }
                else
                {
                    intVFrames = -1;
                    return true;
                }
            }
            return false;
        }

        private bool IsValidHeader()
        {
            return (((getFrameSync() & 2047) == 2047) &&
                    ((getVersionIndex() & 3) != 1) &&
                    ((getLayerIndex() & 3) != 0) &&
                    ((getBitrateIndex() & 15) != 0) &&
                    ((getBitrateIndex() & 15) != 15) &&
                    ((getFrequencyIndex() & 3) != 3) &&
                    ((getEmphasisIndex() & 3) != 2));
        }

        private int getFrameSync()
        {
            return (int)((bithdr >> 21) & 2047);
        }

        private int getVersionIndex()
        {
            return (int)((bithdr >> 19) & 3);
        }

        private int getLayerIndex()
        {
            return (int)((bithdr >> 17) & 3);
        }

        private int getProtectionBit()
        {
            return (int)((bithdr >> 16) & 1);
        }

        private int getBitrateIndex()
        {
            return (int)((bithdr >> 12) & 15);
        }

        private int getFrequencyIndex()
        {
            return (int)((bithdr >> 10) & 3);
        }

        private int getPaddingBit()
        {
            return (int)((bithdr >> 9) & 1);
        }

        private int getPrivateBit()
        {
            return (int)((bithdr >> 8) & 1);
        }

        private int getModeIndex()
        {
            return (int)((bithdr >> 6) & 3);
        }

        private int getModeExtIndex()
        {
            return (int)((bithdr >> 4) & 3);
        }

        private int getCoprightBit()
        {
            return (int)((bithdr >> 3) & 1);
        }

        private int getOrginalBit()
        {
            return (int)((bithdr >> 2) & 1);
        }

        private int getEmphasisIndex()
        {
            return (int)(bithdr & 3);
        }

        private double getVersion()
        {
            double[] table = { 2.5, 0.0, 2.0, 1.0 };
            return table[getVersionIndex()];
        }

        private int getLayer()
        {
            return (int)(4 - getLayerIndex());
        }

        private int getBitrate()
        {
            // Bei Variabler Bitrate wird ein Mittelwert gebildet
            if (boolVBitRate)
            {
                double medFrameSize = (double)lngFileSize / (double)getNumberOfFrames();
                return (int)((medFrameSize * (double)getFrequency()) / (1000.0 * ((getLayerIndex() == 3) ? 12.0 : 144.0)));
            }
            else
            {
                int[, ,] table =        {
                                { // MPEG 2 & 2.5
                                    {0,  8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160,0}, // Layer III
                                    {0,  8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160,0}, // Layer II
                                    {0, 32, 48, 56, 64, 80, 96,112,128,144,160,176,192,224,256,0}  // Layer I
                                },
                                { // MPEG 1
                                    {0, 32, 40, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,0}, // Layer III
                                    {0, 32, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,384,0}, // Layer II
                                    {0, 32, 64, 96,128,160,192,224,256,288,320,352,384,416,448,0}  // Layer I
                                }
                                };

                return table[getVersionIndex() & 1, getLayerIndex() - 1, getBitrateIndex()];
            }
        }

        private int getFrequency()
        {
            int[,] table =    {    
                            {32000, 16000,  8000}, // MPEG 2.5
                            {    0,     0,     0}, // reserved
                            {22050, 24000, 16000}, // MPEG 2
                            {44100, 48000, 32000}  // MPEG 1
                        };

            return table[getVersionIndex(), getFrequencyIndex()];
        }

        private string getMode()
        {
            switch (getModeIndex())
            {
                default:
                    return "Stereo";
                case 1:
                    return "Joint Stereo";
                case 2:
                    return "Dual Channel";
                case 3:
                    return "Single Channel";
            }
        }

        private int getLengthInSeconds()
        {
            // "intKilBitFileSize" geteilt durch 1000 damit die Formel stimmt "Kilobits/second"
            int intKiloBitFileSize = (int)((8 * lngFileSize) / 1000);
            return (int)(intKiloBitFileSize / getBitrate());
        }

        private string getFormattedLength()
        {
            // Komplette Sekunden
            int s = getLengthInSeconds();

            // Sekunden formatiert
            int ss = s % 60;

            // Komplette Minuten
            int m = (s - ss) / 60;

            // Formatierte Minuten
            int mm = m % 60;

            // Komplette Stunden
            int h = (m - mm) / 60;

            // mach "hh:mm:ss"
            return h.ToString("D2") + ":" + mm.ToString("D2") + ":" + ss.ToString("D2");
        }

        private int getNumberOfFrames()
        {
            // Die Anzahl der MPGFrames ist abhängig obs eine Variable Bitrate oder eine feste ist
            if (!boolVBitRate)
            {
                double medFrameSize = (double)(((getLayerIndex() == 3) ? 12 : 144) * ((1000.0 * (float)getBitrate()) / (float)getFrequency()));
                return (int)(lngFileSize / medFrameSize);
            }
            else
                return intVFrames;
        }
    }

Thema: DataGridView einzeln reihen
Am im Forum: GUI: Windows-Forms

Hi ,

teste mal bitte folgendes :

Füge einen Button ein

In den Eventhandler packste bitte folgendes:

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
            {
                DataGridViewRow tempRow = row;
                int NextRow = dataGridView1.Rows.GetPreviousRow(row.Index, DataGridViewElementStates.None);
                dataGridView1.Rows.Remove(row);
                dataGridView1.Rows.Insert(NextRow-1,tempRow);
            }
Dann Zeile markieren und Knopp drücken

ACHTUNG ungetestet, da gerade keine brauchbare IDE in der nähe.
Wenns klappt super wenn nicht kriegste gegen 19 Uhr ne andere Variante ^^

Thema: DataGridView einzeln reihen
Am im Forum: GUI: Windows-Forms

Oh beim zweiten mal lesen hab ich es nun begriffen : Du willst quasi wie bei Drag and Drop eine Zeile hinter eine andere einreihen können ja ?

Thema: DataGridView einzeln reihen
Am im Forum: GUI: Windows-Forms

Hi,

hast du eine ID für jeden Datensatz ?
Wenn ja , kannst du im Datagrid eine Spalte definieren wo genau diese Nummer eingetragen wird(Evtl. unsichtbar für den User)

Und schon hättest du deine Zuordnung

Aber ne andere Frage : Wofür brauchst du das ? Durch das Binden kannst du auf dem Datagrid arbeiten welches nur auf deine DataTable verweist.
Effektiv musst du nichts weiter machen als nach möglichen Änderungen zu speichern

Siehe LINK

Thema: MEF : Dependency Injection Framework oder nicht
Am im Forum: Rund um die Programmierung

Hi Talla,

werde mir die Links mal anschauen , Danke

Thema: MEF : Dependency Injection Framework oder nicht
Am im Forum: Rund um die Programmierung

Hallo zusammen,

nachdem mit zero_x mit meinem MEF Problem geholfen hat (Siehe Hier) kam bei mir der Gedanken auf nun ein Problem mit Dependency Injection zu lösen.
Dabei hat zero_x nun etwas durchklingen lassen das MEF sich dafür evtl. gar nicht eignet ?
Frank Dzaebel ein MVP schwört auf MEF und lässt da nix an MEF rankommen.

Wie seht Ihr das ? Ist MEF ein brauchbares DI Framework ? Oder würdet Ihr zu etwas anderem raten?
Hat jmd schon mit MEF aktiv gearbeitet und kann evtl. sogar Beispiele posten ?

Grüße

Thema: MEF und meine Probleme mit dem Design
Am im Forum: Rund um die Programmierung

Hi ,

danke für die Tipps.

Ich mache dann mal nen Thread auf ;-)

Thema: MEF und meine Probleme mit dem Design
Am im Forum: Rund um die Programmierung

Hi,

also wenn ich das richtig verstanden habe :

Interface IFileReader in eine DLL packen.

Alle FileReader wie HaymarketFileReader referenzieren diese DLL.

Und im Host lade ich dann alle vom Typ IFileReader rein .

Richtig ?

Das würde aber auch bedeuteten das jede FileReader irgendwie noch den FileSearcher kriegen muss.
Wobei : Ich kann den FileSearcher als Klasse in den Host mit reinknallen und den dann als Interface an die jeweiligen Klassen übergeben oder ?
Quasi als Dependency Injection ?
Oder macht es dann eher Sinn die "gesuchten" Dateien den jeweiligen Implementierungen von IFileReader zu übergeben ?

Grüße

Thema: MEF und meine Probleme mit dem Design
Am im Forum: Rund um die Programmierung

Hi Ok Sorry also :

Program -> (siehe Anhang)

Das ist die GUI für das Programm
Dieses Programm soll universell, je nach Dateinhalt Daten verarbeiten und Daten versenden .

So sieht zB eiune dieser Klassen aus .

 class HaymarketFileReader:IFileReader
    {
        private readonly string _ExportFolder;

        public event EventHandler<LogEventArgs> OnLogEntry;
        public event EventHandler<ErrorEventArgs> OnError;
        public event EventHandler<FileSendEventArgs> OnFileSend;

public void StartSearch()
        {
            var fileSearcher = new FileSearcherFtp();
            fileSearcher.OnError += new EventHandler<ErrorEventArgs>(fileSearcher_OnError);
            fileSearcher.OnSearchComplete += new EventHandler<FileSearchEventArgs>(fileSearcher_OnSearchComplete);
        }
}

Und genau diese Klassen sollen als DLL ausgelagert werden Knackpunkt : Jede Klasse soll den FileSearcher nutzen.
Dieser liegt aber wiederrum in einer anderen DLL.

Und da liegt mein Problem wie binde ich das am günstigsten mit MEF ein ?

Hoffe du hast das jetzt ein wenig besser verstanden.

Grüße

Thema: MEF und meine Probleme mit dem Design
Am im Forum: Rund um die Programmierung

Hallo zusammen,

ich ahbe ein kleines Problem :

Meine Anwendung soll nun per MEF Addons bekommen.
Besser gesagt mehrere neue Klassen.
Das Programm sucht an vorgegebenen Orten nach Dateien und verarbeitet die .

Ich habe nun für verschiedene Files mehrere Klassen
Diese Klassen rufen eine generische FileSearcherklasse auf.

So nun zum Problem : Wenn ich nun per MEF immer neue Klassen nachschiebe müssen die ja zwangsläufig jede diese Filesearcherklasse implementieren, also muss ich jeder DLL diese Klasse mitgeben.
Das würde aber gegen die Prinzipien sprechen wie DRY etc.

Wie Löse ich das ganze nun am klügsten ?

Grüße