asp.net中如何把sql中的数据查找出来,并且倒入到Excel文件中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net中如何把sql中的数据查找出来,并且倒入到Excel文件中相关的知识,希望对你有一定的参考价值。
在Bin中导入ExcelLibrary.dll引入using ExcelLibrary.SpreadSheet;
代码如下:
protected void btnExcel_Click(object sender, EventArgs e)
FileUpload upload = new FileUpload();
this.gvStatistics.AllowPaging = false;//先取消分页,以便能将所有数据导出。
this.gvStatistics.DataBind();//再重新绑定一次数据
int rows = this.gvStatistics.Rows.Count;//行数
int columns = this.gvStatistics.Columns.Count;//列数
int pages = this.gvStatistics.PageCount;//页数
Workbook book = new Workbook();
Worksheet sheet = new Worksheet("sheet1");
string value = "";
for (int r = 0; r < rows; r++)
for (int c = 0; c < columns; c++)
value = this.gvStatistics.Rows[r].Cells[c].Text;
sheet.Cells[r, c] = new Cell(value);
book.Worksheets.Add(sheet);
book.Save(@"D:\名字.xls");
this.gvStatistics.AllowPaging = true;//导出后分页。
this.gvStatistics.DataBind();//再重新绑定一次数据
这个是从GridView中导出到Exce中的,希望对你有用 参考技术A 查出来绑定GridView1 然后导出
private void ExportDataGrid(string FileType, string FileName)//生成excel
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8));
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter tw = new StringWriter();
htmlTextWriter hw = new HtmlTextWriter(tw);
GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
public override void VerifyRenderingInServerForm(Control control)
然后直接调用 ExportDataGrid("application/ms-excel","报表.xls"); 参考技术B Response.AddHeader(追问
什么意思????
如何根据 VB ASP.net 和 SQL 中的多个数据绑定下拉列表最好地过滤 gridview
【中文标题】如何根据 VB ASP.net 和 SQL 中的多个数据绑定下拉列表最好地过滤 gridview【英文标题】:How to best filter gridview based on multiple databound dropdownlists in VB ASP.net & SQL 【发布时间】:2016-01-13 06:10:11 【问题描述】:我有一个网格视图,它当前从表中提取所有记录。此外,我有 4 个下拉列表,它们数据绑定到 4 列中的每一列的所有可能值,并且下拉列表列表被设置为用于数据库查询的 gridview 中的控件。
在每个 downdownlist 中,我在顶部附加了一个空白值,这是默认值,并且无论何时选择此值,数据库都会使用它来返回所有结果(当为 null 时,该列上没有过滤器)。
这是当前的数据库查询。
SELECT
Week_Ending, Employee, Project, Status_Of_Employment
FROM
Times
WHERE
(@Project IS NULL OR Project LIKE @Project)
AND (@Employee IS NULL OR Employee LIKE @Employee)
AND (@Status_Of_Employment IS NULL OR Status_Of_Employment LIKE @Status_Of_Employment)
AND (@WeekEnding IS NULL OR Week_Ending = CONVERT(datetime, @WeekEnding, 103))
此查询允许用户按任何一个或 4 列的组合进行过滤
除了在初始页面加载时出现的问题外,此解决方案运行良好.
我希望能够做的是防止 gridview 在初始页面加载时显示任何结果,直到应用过滤器之一。我知道,我可以为每个下拉列表使用一些无效数据,例如“请选择一个过滤器”,而不是默认的空白值,但理想情况下,我希望用户不必在每个下拉列表中选择空白选项来选择无过滤器,因为大多数查询通常只是一个或两个过滤器。
是否有一种简单的方法可以在初始页面加载之前停止查询,或者是否有使用我忽略的下拉列表进行过滤的最佳实践?
谢谢
【问题讨论】:
你可能在Page_Load
事件中加载GridView
,删除它。
它没有在 Page_Load 事件中加载。但是作为一个配置了数据源的gridview,它有一个带有有效控制参数的查询,它会自动显示与查询匹配的结果。
将其更改为从代码加载。然后您可以控制何时加载。
将你的 sqldatasource 移动到代码后面,并且不要在第一次加载时绑定你的 gridview
感谢您的建议。我已将其更改为后面的代码。解决方案发布在下面。
【参考方案1】:
我没有以编程方式将绑定到数据源的 gridview 移动到后面的代码中,而是从数据源中删除了 SelectCommand 并在第一次回发时以编程方式添加它。这样我的 gridview 仍然加载并显示我的 EmptyDataText 值。
Dim dataSourceBindComplete As Boolean = False
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
If dataSourceBindComplete = False Then
dataSourceBindComplete.SelectCommand = "SELECT Week_Ending, Employee, Project, Status_Of_Employment FROM Times WHERE (@Project IS NULL OR Project LIKE @Project) AND (@Employee IS NULL OR Employee LIKE @Employee) AND (@Status_Of_Employment IS NULL OR Status_Of_Employment LIKE @Status_Of_Employment) AND (@WeekEnding IS NULL OR Week_Ending = CONVERT(datetime, @WeekEnding, 103))"
dataSourceBindComplete = True
End If
End If
End Sub
【讨论】:
以上是关于asp.net中如何把sql中的数据查找出来,并且倒入到Excel文件中的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 导出EXCEL时如何不把一些不是EXCEL的符号一起导出到EXCEL?
ASP.NET 把数据库中的数据查询出来后导出到Excel。
如何使用json从sql server ASP.net中检索数据
如何使用 json 从 sql server ASP.net 中检索数据
在 sql asp.net mvc 5 中使用 linq 时如何格式化记录中的数据?
ASP.NET + SQL SERVER + JSON = 如何在 SQL Server 的两个连接表中获取数据并加载为 JSON?