28. marts 2006 - 13:45Der er
20 kommentarer og 1 løsning
Data fra MS-SQL til Excel med ASP.NET
Jeg skal lave en knap der ekportere en tabel fra sql db til Excel, er der nogen der ved hvordan man griber det an, jeg kan sagten ekportere til et datagrid men nu skal det eksporteres direkte til Excel.
// set to break on all errors Application.SetOption "Error Trapping", 0;
// start with a clean file built from the template file sTemplate = CurrentProject.Path + "\\SalesTemplate.xls"; sOutput = CurrentProject.Path + "\\SalesOutput.xls"; if (Microsoft.VisualBasic.FileSystem.Dir(sOutput, Microsoft.VisualBasic.FileAttribute.Normal) != "") Kill sOutput; FileCopy sTemplate, sOutput;
// Create the Excel Applicaiton, Workbook and Worksheet and Database object Set appExcel = Excel.Application; Set wbk = appExcel.Workbooks.Open(sOutput); Set wks = appExcel.Worksheets(cTabTwo); sSQL = "select * from qrySales"; Set dbs = CurrentDb; Set rst = dbs.OpenRecordset(sSQL, dbOpenSnapshot);
// For this template, the data must be placed on the 4th row, third column. // (these values are set to constants for easy future modifications) iCol = cStartColumn; iRow = cStartRow; if (! rst.BOF) rst.MoveFirst(); while ( ! (rst.EOF)) { iFld = 0; lRecords = lRecords + 1; this.lblMsg.Caption = "Exporting record #" + lRecords + " to SalesOutput.xls"; this.Repaint;
//INSTANT C# NOTE: The ending condition of VB 'For' loops is tested only on entry to the loop. Instant C# has created a temporary variable in order to use the initial value of cStartColumn + (rst.Fields.Count - 1) for every iteration: int tempFor1 = cStartColumn + (rst.Fields.Count - 1); for (iCol = cStartColumn; iCol <= tempFor1; iCol++) { wks.Cells(iRow, iCol) = rst.Fields[iFld];
exit_Here: // Cleanup all objects (resume next on errors) //TODO: INSTANT C# TODO TASK: The 'On Error Resume Next' statement is not converted by Instant C#: On Error Resume Next Set wks = null; Set wbk = null; Set appExcel = null; Set rst = null; Set dbs = null; DoCmd.Hourglass false; return tempExportRequest;
}
catch { //TODO: INSTANT C# TODO TASK: Calls to the VB 'Err' object are not converted by Instant C#: tempExportRequest = Err.Description; //TODO: INSTANT C# TODO TASK: Calls to the VB 'Err' object are not converted by Instant C#: this.lblMsg.Caption = Err.Description; goto exit_Here;
Anyway, det er bare at sætte: Response.ContentType = "application/vnd.ms.excel";
Så er det også en god ide at fjerne alt der ikke lige er <html>, <body> eller <table> tags, så excel ikke fucker op. F.eks. skal du sætte EnableViewState="false"..
Det kan også bruges, spørgsmålet er så bare at ved at bruge Response.ContentType = "application/vnd.ms.excel"; eksporteres dataene ikke direkte til excel??
GridView er en 2.0 version af DataGrid, med mere standard xhtml-agtighed... Så simpelt er det.. GridView har vist også lidt flere funktionaliteter, men det kan jeg ikke lige udtale mig om på stående fod.
Ok jeg har fået det til at virke, jeg skulle lige forstå hvad f..... det var du mente, men nu spiller det lige efter bogen. Så hvis du smider et svar så er pointuddeling..
Jeg udvikler i 1.1, så det var nok derfor jeg ikke fattede hvad et GridView var.:-) men så er man da blevet det klogere..
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.