vb导出excel代码详解

求详解每行代码的作用PrivateSubCommand3_Click()DimiAsInteger,jAsIntegerDimxlappAsExcel.Applicati... 求详解每行代码的作用
Private Sub Command3_Click()
Dim i As Integer, j As Integer
Dim xlapp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Set xlapp = CreateObject("excel.application")
xlapp.Visible = True
Set xlbook = xlapp.Workbooks.Add
Set xlsheet = xlbook.Worksheets(1)

xlsheet.Cells(1, 1) = "课程号"
xlsheet.Cells(1, 2) = "课程名"
xlsheet.Cells(1, 3) = "年级"
xlsheet.Cells(1, 4) = "学分"
xlsheet.Cells(1, 5) = "备注"

adoPrimaryRS.MoveFirst
i = 0
Do While (adoPrimaryRS.EOF = False)

For j = 0 To adoPrimaryRS.Fields.Count - 1

DataGrid.Col = j
xlsheet.Cells(i + 2, j + 1) = DataGrid.Text
Next j
adoPrimaryRS.MoveNext
i = i + 1
Loop
Set xlapp = Nothing
Set xlbook = Nothing
End Sub
展开
 我来答
幸运的杨晨晨
2015-10-29 · TA获得超过2.2万个赞
知道小有建树答主
回答量:1000
采纳率:66%
帮助的人:270万
展开全部
private void ExportExcelFromDataGrid
( string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )
...{
Response.Clear();
Response.Buffer= true;
Response.Charset="utf-8";
Response.AppendHeader ("Content-Disposition","attachment;filename="+Server.UrlEncode ( filename ) );
Response.ContentEncoding=System.Text.Encoding.Default;//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad =
new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter =
new System.Web.UI.HtmlTextWriter(oStringWriter);
ToExcelGrid.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}

private void Button4_Click(object sender, System.EventArgs e)
...{
this.Panel1.Visible = false;
string filename = "内训师.xls";
this.DataGrid1.Columns[6].Visible = true;
this.DataGrid1.Columns[7].Visible = true;
this.DataGrid1.Columns[this.DataGrid1.Columns.Count-1].Visible = false; // *
this.DataGrid1.Columns[this.DataGrid1.Columns.Count-2].Visible = false; // *
this.DataGrid1.AllowSorting = false; // *
this.DataGrid1.AllowPaging = false;
this.DataGrid1.SelectedIndex = -1; // *
this.BindGrid();
this.ExportExcelFromDataGrid ( filename , this.DataGrid1 );
}
}
原理是利用DataGrid(其实是其父类Control)的RenderControl方法输出,整个DataGrid的外观时,将这些HTML代码写入到缓冲区,同时设置一下 ContentType ,让Excel自己的自动纠错功能将这个输出存为一个Excel文件。

很多网上的朋友使用了以上这种可粘贴性强的代码,发现不好用,反映的错误类似:
“LinkButton必须放在一个具有runat=server的标签的Form”之类的话,而更多的网友说:
问题很明显,因为DataGrid没有放在runat=server 的Form里面,加上就可以了。

我认为,这种回答是很不准确的,理由如下:

通常使用这种代码的人他/她的DataGrid,最起码已经能用了,所以必定放在那个具有runat=server 的form标签里了。 报错是LinkButton,而不是DataGrid,很多细心的朋友很可能会说,我一直在用DataGrid,LinkButton在哪里来的。 其实真正的问题是,上面的代码没有加了 // * 的那几行代码引起的。
当然如果你的DataGrid,没有排序,没有使用那种按钮列的话,是不会出问题的。
言归正传,LinkButtion其实是你将DataGrid设为可排序时候,的表头包含的,所以我要将DataGrid的排序设为False。
同样得到上面的其实,那些按钮列,什么"编辑"、“删除”等等这些,也是用了LinkButton,把他设为不可见就是了。
其实说得再明白一点就是,将有可能产生LinkButton,或其他控件的东西都不让它输出就是了

vb.net dataGridView中的数据导出为excel表2010-03-01 15:03在form1窗体里添加一个dataGridView1(根据自己是使用情况要给他命名,符合命名规范哟。)在添加一个Button1(命名)。记着,dataGridView的属性里有一个allowUsersToAddRows,要设置成FALSE。否则会发生一个错误,当然错误是什么你自己试一下就ok了。

还有一点要注意:因为你要用到excel表,所以要首先在项目里添加引用哟:项目(project)-添加引用(add reference)-Microsoft .Office.Interop.Excel

Button1的代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'要先添加引用才能用到 Microsoft.Office.Interop.Excel.Application()
Dim MyExcel As New Microsoft.Office.Interop.Excel.Application()
MyExcel.Application.Workbooks.Add(True)
MyExcel.Visible = True

'去除dataGridView1的编号列(这里也可以不要)
Dim m As Integer
For m = 0 To DataGridView1.ColumnCount - 1
MyExcel.Cells(1, m + 1) = Me.DataGridView1.Columns(m).HeaderText
Next m

'往excel表里添加数据
Dim i As Integer
For i = 0 To DataGridView1.RowCount - 1
Dim j As Integer
For j = 0 To DataGridView1.ColumnCount - 1
If Me.DataGridView1(j, i).Value Is System.DBNull.Value Then

MyExcel.Cells(i + 2, j + 1) = ""
Else
MyExcel.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString

End If
Next j
Next i

End Sub
善良的独孤风雪
2015-11-08 · TA获得超过4.1万个赞
知道大有可为答主
回答量:7536
采纳率:91%
帮助的人:1798万
展开全部
准备工作,引用EXCEL11.0,与一个grid1控件和一个adodc1控件。
'以下为导出EXCEL
'以下放到form中去。
Adodc1.connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\pmdb.mdb;Persist Security Info=False" '设置数据库路径
Adodc1.CommandType = adCmdText '设置记录源
Adodc1.RecordSource = "select * from new ORDER BY 好友姓名"
Set Grid1.DataSource = Adodc1
'以下放到代码框的最前面。
Private Sub toexcel()
On Error GoTo aa:
Dim i, j As Integer
Dim ex As Object
Dim exwbook As Object
Dim exsheet As Object
Set ex = CreateObject("Excel.Application") '创建EXCEL对象
Set exwbook = ex.Workbooks.Add '打开文件
ex.Visible = True
Set exsheet = exwbook.Worksheets("sheet1") '设定工作表
For i = 1 To Grid1.Rows
For j = 1 To Grid1.Cols - 1
exsheet.Cells(i, j) = Grid1.TextMatrix(i - 1, j)
Next j
Next i
aa:
Exit Sub
End Sub
'以下放到一个导出按钮上去就行了。
Call toexcel
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuanxuan163com
2011-05-03 · TA获得超过2769个赞
知道大有可为答主
回答量:1709
采纳率:75%
帮助的人:1599万
展开全部
Private Sub Command3_Click()
'定义整数i,j
Dim i As Integer, j As Integer
'定义Excel应用程序对象
Dim xlapp As Excel.Application
'定义Excel工作薄对象
Dim xlbook As Excel.Workbook
'定义Excel工作表对象
Dim xlsheet As Excel.Worksheet
'创建Excel应用程序对象
Set xlapp = CreateObject("excel.application")
'Excel应用程序对象可见
xlapp.Visible = True
'新建工作薄,赋值给xlbook
Set xlbook = xlapp.Workbooks.Add
'工作薄xlbook的第一个工作表赋值给xlsheet
Set xlsheet = xlbook.Worksheets(1)

'工作表xlsheet的单元格A1、B1、C1、D1、F1分别输入"课程号"、"课程名"、"年级"、"学分"、"备注"
xlsheet.Cells(1, 1) = "课程号"
xlsheet.Cells(1, 2) = "课程名"
xlsheet.Cells(1, 3) = "年级"
xlsheet.Cells(1, 4) = "学分"
xlsheet.Cells(1, 5) = "备注"

'数据库记录移至开始
adoPrimaryRS.MoveFirst
i = 0
'数据库每条记录
Do While (adoPrimaryRS.EOF = False)
'数据库记录的每个字段
For j = 0 To adoPrimaryRS.Fields.Count - 1

'数据库记录每个字段的值写入单元格
DataGrid.Col = j
xlsheet.Cells(i + 2, j + 1) = DataGrid.Text
Next j
'下一条记录
adoPrimaryRS.MoveNext
'下一行单元格
i = i + 1
Loop
'释放内存
Set xlapp = Nothing
Set xlbook = Nothing
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式