.NET-Komponente für Excel 2003-Kalkulationstabelle Generation mit Hilfe von Vorlagen für die Formatierung

StackOverflow https://stackoverflow.com/questions/1405431

Frage

Das Problem meiner Anwendung zu lösen versucht, ist dies:

Derzeit werden mehrere gespeicherte Prozeduren ausführen, werden die Daten manuell aus der SQL-Ergebnisse in eine leere Tabelle kopiert und Reporting Analysten die Daten formatiert werden. Dieser Prozess wurde zu lange gehalten und teuer.

Die ideale Lösung (in meinem Kopf) ist eine .NET-Anwendung mit einer Komponente, die eine gespeicherte Prozedur Ergebnis und schreiben Sie es auf einen bestimmten Zellbereich in einem Arbeitsblatt-Vorlage (Template beibehalten Formatierung) nehmen und dann kann ich nur die collate führt in Arbeitsmappen in der .NET-Anwendung.

Gibt es solche Anwendungen gibt? Noch besser ist, hat jemand irgendwelche besseren Lösungen?

Vielen Dank für Ihre Aufmerksamkeit.

War es hilfreich?

Lösung

Was ich verwende, um die Daten zu setzen

erhält die Daten in Form von

object[,] excelSpreadsheetData

dann die Daten anwenden, indem

public void SetWorksheetData(long rowCount, long columnCount, object[,] excelSpreadsheetData, int startingRow, int startingCol, Worksheet worksheet)
        {
            if (rowCount == 0 || columnCount == 0) return;
            //set the region data.
            object m_objOpt = Missing.Value;
            Range cellRange = worksheet.get_Range(ExcelGeneratorUtils.ExcelColumnFromNumber(startingCol) + startingRow, m_objOpt);
            cellRange = cellRange.get_Resize(rowCount, columnCount);
            cellRange.set_Value(m_objOpt, excelSpreadsheetData);
        }

Dies sollte die Vorlage Formatierung halten, und stellt die Daten in einem Rutsch, viel schneller als es Zelle für Zelle zu setzen.

Ich hoffe, das hilft

Andere Tipps

SpreadsheetGear for .NET lassen Sie Excel-Dateien öffnen, in Werte stecken und die Arbeitsmappe speichern.

Sie können Excel-Reporting (dh den Export nach Excel) Proben hier und eine kostenlose Testversion herunterladen hier .

Disclaimer: Ich besitze SpreadsheetGear LLC

Sie können immer Excel-Automatisierung durch Interop verwenden. Ich habe dies gelegentlich geschehen, wenn die gewünschte Ausgabe ist Excel. Seine überraschend schnell, müssen Sie vorsichtig sein, wenn sich selbst zu reinigen und nicht verlassen Instanzen von Excel ausgeführt wird. Hier ist eine kurze Probe.

        using Excel = Microsoft.Office.Interop.Excel;

        Excel.ApplicationClass _Excel;
        Excel.Workbook WB;
        Excel.Worksheet WS;


        _Excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
        WB = _Excel.Workbooks.Add(System.Reflection.Missing.Value);

        WS = (Excel.Worksheet)WB.Worksheets[1]; 
        WS.Name = "Test";

         try
        {

            int row;
            int col;

            WS.Cells[++row, col] = "COL1";
            WS.Cells[row, ++col] = "COL2";

            WS.get_Range("A1", "A2").Font.Bold = true;
            WS.get_Range("A1", "A2").HorizontalAlignment                     =Excel.XlHAlign.xlHAlignCenter;

            WS.Cells[++row, col] = "Customer";
            WS.Cells[++row, col] = "Expenses" 

            WS.get_Range("A1", "B1").Font.Bold = true;


            WS.Columns.AutoFit();
            WS.Rows.AutoFit();

            WS.Activate();
           _Excel.Visible = true;
        }
        catch (Exception ex)
        {
            WB.Close(false, Type.Missing, Type.Missing);
            _Excel.Quit();
            throw;
        }
        finally
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();



            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WS);


            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WB);

            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_Excel);


        }

ich für etwas Ähnliches gefragt. Der Unterschied ist, dass ich etwas will eine XML-Datei erzeugen, die von Excel als Tabelle interpretiert wird. Wenn Sie die Daten in einer XML-Datei senden könnte, dann die XML zu SpreadsheetML verwandeln, dann könnte dies Ihr Problem lösen. SpreadsheetXM hat ein paar Einschränkungen haben, though. Es wird nicht benötigt Excel installiert werden und die Transformation kann wirklich schnell sein. Und wenn Sie Excel 2007 verwenden dann ist da noch ein zweites XML-Format, die Sie, die Microsoft Office XML verwenden könnte Format. Im Grunde ist es langsam, weil ich vermute, dass Ihr aktueller Code mit Excel über COM interagieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top