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

我是隔壁老刘啊 2016-06-06 01:01:57
我想将数据库里面的某些内容从网站下载成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;
}
...全文
144 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 7 楼 xdashewan 的回复:
[quote=引用 5 楼 a815673899 的回复:] 谢谢 可是要怎么弄啊,我百度了一天没整明白
用留返回,参考http://www.cnblogs.com/Franking/articles/1012330.html[/quote] 谢谢 我用插件实现了……
xdashewan 2016-06-08
  • 打赏
  • 举报
回复
引用 5 楼 a815673899 的回复:
谢谢 可是要怎么弄啊,我百度了一天没整明白
用留返回,参考http://www.cnblogs.com/Franking/articles/1012330.html
  • 打赏
  • 举报
回复
引用 3 楼 kfrhappy 的回复:
你要输出给客户端 不是在服务端执行
谢谢 可是要怎么弄啊,我百度了一天没整明白
  • 打赏
  • 举报
回复
引用 2 楼 xdashewan 的回复:
服务器会打开是你自己代码导致的,excel.Visible = isShowExcle;。下载完全又是另一回事
谢谢 可是要怎么弄啊,我百度了一天没整明白
  • 打赏
  • 举报
回复
引用 1 楼 FoxDave 的回复:
你在服务器生成好excel之后把它返回到客户端
谢谢 可是要怎么弄啊,我百度了一天没整明白
Net攻城狮 2016-06-07
  • 打赏
  • 举报
回复
你要输出给客户端 不是在服务端执行
xdashewan 2016-06-06
  • 打赏
  • 举报
回复
服务器会打开是你自己代码导致的,excel.Visible = isShowExcle;。下载完全又是另一回事
Justin-Liu 2016-06-06
  • 打赏
  • 举报
回复
你在服务器生成好excel之后把它返回到客户端

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧