网站下载Excel,却在服务器打开了

时间:2021-09-06 17:51:03
我想将数据库里面的某些内容从网站下载成Excel,保存在机器上。
结果将程序发布到服务器上之后发现客户端打开网站点击下载没有反应,服务器却打开了Excel,请问怎么解决。
ASP.NET 
[WebMethod]
        public static void XIAZAI2()
        {
            string str = "sql语句";
            SqlConnection conbannerd = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["strcon"]);
            SqlCommand combannerd = new SqlCommand();
            combannerd.Connection = conbannerd;
            combannerd.CommandText = str;
            SqlDataAdapter da = new SqlDataAdapter(combannerd);
            DataSet dts = new DataSet();
            try
            {
                conbannerd.Open();//打开数据库
                da.Fill(dts);

                DataSetToExcel2(dts, true);

                conbannerd.Close();//关闭数据库,一定要注意关闭
                //SourceSize();

            }
            catch (Exception)
            {
                conbannerd.Close();//关闭数据库,一定要注意关闭
            }
        }

        public static bool DataSetToExcel2(DataSet dataSet, bool isShowExcle)
        {
            System.Data.DataTable dataTable = dataSet.Tables[0];
            int rowNumber = dataTable.Rows.Count;//不包括字段名 
            int columnNumber = dataTable.Columns.Count;
            int colIndex = 0;

            if (rowNumber == 0)
            {
                return false;
            }

            //建立Excel对象 
            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
            //excel.Application.Workbooks.Add(true); 
            Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
            excel.Visible = isShowExcle;
            //Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[1]; 
            Microsoft.Office.Interop.Excel.Range range;

            //生成字段名称 
            foreach (DataColumn col in dataTable.Columns)
            {
                colIndex++;
                excel.Cells[1, colIndex] = col.ColumnName;
            }

            object[,] objData = new object[rowNumber, columnNumber];

            for (int r = 0; r < rowNumber; r++)
            {
                for (int c = 0; c < columnNumber; c++)
                {
                    objData[r, c] = dataTable.Rows[r][c];
                }
                //Application.DoEvents(); 
            }


            //Range range = excel.get_Range(excel.Cells[1, 1], excel.Cells[1, 10]);

            //Range range = excel.Range    [excel.Cells[1, 1], excel.Cells[1, 10]];


            // 写入Excel 
            //range = worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, columnNumber]);
            range = worksheet.Range[excel.Cells[2, 1], excel.Cells[rowNumber + 1, columnNumber]];
            //range.NumberFormat = "@";//设置单元格为文本格式 
            range.Value2 = objData;
            worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, 1]).NumberFormat = "yyyy-m-d h:mm";

            return true;
        }

8 个解决方案

#1


你在服务器生成好excel之后把它返回到客户端

#2


服务器会打开是你自己代码导致的,excel.Visible = isShowExcle;。下载完全又是另一回事

#3


你要输出给客户端 不是在服务端执行

#4


引用 1 楼 FoxDave 的回复:
你在服务器生成好excel之后把它返回到客户端

谢谢 可是要怎么弄啊,我百度了一天没整明白

#5


引用 2 楼 xdashewan 的回复:
服务器会打开是你自己代码导致的,excel.Visible = isShowExcle;。下载完全又是另一回事
谢谢 可是要怎么弄啊,我百度了一天没整明白

#6


引用 3 楼 kfrhappy 的回复:
你要输出给客户端 不是在服务端执行

谢谢 可是要怎么弄啊,我百度了一天没整明白

#7


引用 5 楼 a815673899 的回复:
谢谢 可是要怎么弄啊,我百度了一天没整明白

用留返回,参考http://www.cnblogs.com/Franking/articles/1012330.html

#8


引用 7 楼 xdashewan 的回复:
Quote: 引用 5 楼 a815673899 的回复:

谢谢 可是要怎么弄啊,我百度了一天没整明白

用留返回,参考http://www.cnblogs.com/Franking/articles/1012330.html

谢谢 我用插件实现了……

#1


你在服务器生成好excel之后把它返回到客户端

#2


服务器会打开是你自己代码导致的,excel.Visible = isShowExcle;。下载完全又是另一回事

#3


你要输出给客户端 不是在服务端执行

#4


引用 1 楼 FoxDave 的回复:
你在服务器生成好excel之后把它返回到客户端

谢谢 可是要怎么弄啊,我百度了一天没整明白

#5


引用 2 楼 xdashewan 的回复:
服务器会打开是你自己代码导致的,excel.Visible = isShowExcle;。下载完全又是另一回事
谢谢 可是要怎么弄啊,我百度了一天没整明白

#6


引用 3 楼 kfrhappy 的回复:
你要输出给客户端 不是在服务端执行

谢谢 可是要怎么弄啊,我百度了一天没整明白

#7


引用 5 楼 a815673899 的回复:
谢谢 可是要怎么弄啊,我百度了一天没整明白

用留返回,参考http://www.cnblogs.com/Franking/articles/1012330.html

#8


引用 7 楼 xdashewan 的回复:
Quote: 引用 5 楼 a815673899 的回复:

谢谢 可是要怎么弄啊,我百度了一天没整明白

用留返回,参考http://www.cnblogs.com/Franking/articles/1012330.html

谢谢 我用插件实现了……