【问题标题】:how to download excel file for client machine?如何下载客户端机器的excel文件?
【发布时间】:2018-04-03 18:19:05
【问题描述】:

1.输入类型按钮显示到客户端,点击该按钮,调用javascript方法。

            <input type="button" id="btnImportExcel" name="btnImportExcel" value="Export to Excel" class="btn btn-default" onclick="Export_Excel();" style="width: 10%" />
  1. 此 javascript 方法检索以下参数值并传递给 web 方法背后的代码。

        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. 我们创建一个 Web 方法并使用类对象检索所有参数值并调用 WCF 服务并传递参数值。

        [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. WCF服务执行成功并返回结果后,将结果转换为excel文件。

        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);
            }
    

    问题:
    我在客户端机器上下载问题文件。我试图在客户端机器上下载文件,但在服务器上下载文件。此外,相同的代码在我的本地环境中正常工作。

【问题讨论】:

    标签: javascript c# asp.net ajax wcf


    【解决方案1】:

    您可以使用SheetJS js-xlsx

    使用generateAndDownloadXLSX在您的页面中下载excel文件。

    【讨论】:

    • 由于我不想在我的解决方案中使用任何额外的 JS 文件,你能在代码项目中给我在 asp.net 中的解决方案吗?
    猜你喜欢
    • 2023-04-01
    • 2013-11-02
    • 2016-02-02
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多