2017-10-23 1 views
0

1. Geben Sie den Typ Button zur Client-Seite und klicken Sie auf diese Schaltfläche, rufen Sie die Javascript-Methode.wie Excel-Datei für Client-Maschine herunterladen?

  <input type="button" id="btnImportExcel" name="btnImportExcel" value="Export to Excel" class="btn btn-default" onclick="Export_Excel();" style="width: 10%" /> 
  1. Diese Javascript-Methode ruft die folgenden Parameter Wert und geht auf den Code hinter Web-Methode.

    function Export_Excel() { 
           debugger; 
           var Showdata = {}; 
           Showdata.startdate = $("[id*=txtbegindate]").val(); 
           Showdata.enddate = $("[id*=txtenddate]").val(); 
           if ($('input[id*=RadioButton1]').is(":checked")) { 
            Showdata.radio = 1; 
           } 
           else if ($('input[id*=RadioButton2]').is(":checked")) { 
            Showdata.radio = 2; 
           } 
           $('#divProgress').show(); 
           $.ajax({ 
            type: "POST", 
            url: "Agent_HomePage.aspx/efgh", 
            data: '{xyz: ' + JSON.stringify(Showdata) + '}', 
            contentType: "application/json; charset=utf-8", 
            dataType: "json", 
            success: function (response) { 
             alert(response.d); 
            }, 
            error: function (response) { 
             alert("Error"); 
            } 
           }); 
           $('#divProgress').hide(); 
           $('div#OuterShowImageEdu').on('dialogclose', function (event) { 
            alert('closed'); 
           }); 
          } 
    
  2. wir erstellen eine Web-Methode und unter Verwendung der Klassenobjekt alle Parameter-Werte abrufen und den WCF-Dienst aufrufen und Parameter Wert übergeben.

    [WebMethod] 
         [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)] 
         public static string efgh(Showdata xyz) 
         { 
          string result = ""; 
          DataTable dt; 
          DataSet ds = new DataSet(); 
          string filename = string.Empty; 
          try 
          { 
           string Sdate = string.Format("{0:dd-MMM-yyyy}", xyz.startdate); 
           string Edate = string.Format("{0:dd-MMM-yyyy}", xyz.enddate); 
           List<object> listfinal = new List<object>(); 
           HelloServiceClient client = new HelloServiceClient(); 
           string date = DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss"); 
           var path = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory); 
           if (xyz.radio == "1") 
           { 
            dt = client.OracleConert_Excel(Convert.ToDateTime(Sdate), Convert.ToDateTime(Edate), dec_cod, 1); 
            filename = path + "\\Carrier_House_Manifest" + "_" + date + ".xls"; 
            ExporttoExcel(dt, filename); 
           } 
           else { } 
          }   
          catch (Exception ex) 
          { result = ex.Message; } 
          return result; 
         } 
    
  3. Nach WCF-Dienste erfolgreich durchführen und das Ergebnis zurück, dann führen konvertieren Datei zu übertreffen.

    private static void ExporttoExcel(DataTable dt, string fileName) 
         { 
          int i = 0; 
          int j = 0; 
          string data = null; 
    
          Excel.Application xlApp; 
          Excel.Workbook xlWorkBook; 
          Excel.Worksheet xlWorkSheet; 
    
          object misValue = Missing.Value; 
          xlApp = new Excel.Application(); 
          xlWorkBook = xlApp.Workbooks.Add(misValue); 
          xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
    
          for (int i1 = 0; i1 < dt.Columns.Count; i1++) 
          { 
           xlWorkSheet.Cells[1, i1 + 1] = dt.Columns[i1].ColumnName; 
           xlWorkSheet.get_Range("A1", "AA1").Font.Bold = true; 
           xlWorkSheet.get_Range("A1", "AA1").ColumnWidth = "22"; 
           xlWorkSheet.get_Range("A1", "AA1").Borders.Weight = 4d; 
           //xlWorkSheet.get_Range("A1", "AA1").Interior.Color = Excel.XlRgbColor.rgbLightSteelBlue; 
          } 
          for (i = 0; i <= dt.Rows.Count - 1; i++) 
          { 
           int s = i + 1; 
           for (j = 0; j <= dt.Columns.Count - 1; j++) 
           { 
            data = dt.Rows[i].ItemArray[j].ToString(); 
            xlWorkSheet.Cells[s + 1, j + 1] = data; 
           } 
          } 
          xlWorkBook.SaveAs(fileName, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
          xlWorkBook.Close(true, misValue, misValue); 
          xlApp.Quit(); 
          releaseObject(xlWorkSheet); 
          releaseObject(xlWorkBook); 
          releaseObject(xlApp); 
         } 
    

    Ausgabe:
    I Problemdatei einen Client machine.I downloaden bin immer versuchen Download im Client-Rechner, aber Datei herunterladen auf der server.Also, der gleichen Code ist ordnungsgemäßes Funktionieren in meiner lokalen Umgebung einzureichen.

Antwort

0

können Sie SheetJS js-xlsx

Verwenden verwenden generateAndDownloadXLSX in Ihre Seite ein Excel-Datei zum Download bereit.

+0

können Sie mir die Lösung in asp.net im Code-Projekt geben, weil ich keine zusätzliche JS-Datei in meiner Lösung verwenden möchte? –