DataGridView控件,放一個DataGridView1和Button1到窗體,下面是按鈕下代碼\x0d\x0a Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click\x0d\x0a Me.DataGridView1.AllowUserToAddRows = False\x0d\x0a DataGridView1.RowTemplate.Height = 200\x0d\x0a DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None\x0d\x0a For i = 1 To 3\x0d\x0a Me.DataGridView1.Columns.Add("列" i.ToString, "列" i.ToString)\x0d\x0a Me.DataGridView1.Rows.Add()\x0d\x0a Next\x0d\x0a Me.DataGridView1.Columns(0).Width = 100\x0d\x0a Me.DataGridView1.Columns(1).Width = 500\x0d\x0a Me.DataGridView1.Columns(0).Width = 300\x0d\x0a End Sub\x0d\x0a'自己設(shè)置相關(guān)需要的屬性即可
站在用戶的角度思考問題,與客戶深入溝通,找到合浦網(wǎng)站設(shè)計(jì)與合浦網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋合浦地區(qū)。
一般情況下先用EXCEL做好一個樣表文件,設(shè)定好打印區(qū)域和樣式,需要填內(nèi)容的時候,先程序復(fù)制一個樣表文件,然后調(diào)用API打開表格填寫內(nèi)容并打印,如果想用API來實(shí)現(xiàn)調(diào)整模板和打印預(yù)覽,可能比較困難,而且很抽象,個人覺得費(fèi)時費(fèi)力效果還不一定理想
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;//設(shè)置輸出流為簡體中文
Response.ContentType = "application/ms-excel";//設(shè)置輸出文件類型為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 = "內(nèi)訓(xùn)師.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(其實(shí)是其父類Control)的RenderControl方法輸出,整個DataGrid的外觀時,將這些HTML代碼寫入到緩沖區(qū),同時設(shè)置一下 ContentType ,讓Excel自己的自動糾錯功能將這個輸出存為一個Excel文件。
很多網(wǎng)上的朋友使用了以上這種可粘貼性強(qiáng)的代碼,發(fā)現(xiàn)不好用,反映的錯誤類似:
“LinkButton必須放在一個具有runat=server的標(biāo)簽的Form”之類的話,而更多的網(wǎng)友說:
問題很明顯,因?yàn)镈ataGrid沒有放在runat=server 的Form里面,加上就可以了。
我認(rèn)為,這種回答是很不準(zhǔn)確的,理由如下:
通常使用這種代碼的人他/她的DataGrid,最起碼已經(jīng)能用了,所以必定放在那個具有runat=server 的form標(biāo)簽里了。 報(bào)錯是LinkButton,而不是DataGrid,很多細(xì)心的朋友很可能會說,我一直在用DataGrid,LinkButton在哪里來的。 其實(shí)真正的問題是,上面的代碼沒有加了 // * 的那幾行代碼引起的。
當(dāng)然如果你的DataGrid,沒有排序,沒有使用那種按鈕列的話,是不會出問題的。
言歸正傳,LinkButtion其實(shí)是你將DataGrid設(shè)為可排序時候,的表頭包含的,所以我要將DataGrid的排序設(shè)為False。
同樣得到上面的其實(shí),那些按鈕列,什么"編輯"、“刪除”等等這些,也是用了LinkButton,把他設(shè)為不可見就是了。
其實(shí)說得再明白一點(diǎn)就是,將有可能產(chǎn)生LinkButton,或其他控件的東西都不讓它輸出就是了
vb.net dataGridView中的數(shù)據(jù)導(dǎo)出為excel表2010-03-01 15:03在form1窗體里添加一個dataGridView1(根據(jù)自己是使用情況要給他命名,符合命名規(guī)范喲。)在添加一個Button1(命名)。記著,dataGridView的屬性里有一個allowUsersToAddRows,要設(shè)置成FALSE。否則會發(fā)生一個錯誤,當(dāng)然錯誤是什么你自己試一下就ok了。
還有一點(diǎn)要注意:因?yàn)槟阋玫絜xcel表,所以要首先在項(xiàng)目里添加引用喲:項(xiàng)目(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表里添加數(shù)據(jù)
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
1、首先打開excel工作表格。
2、其次用鼠標(biāo)右鍵點(diǎn)擊“標(biāo)簽欄”,選擇“插入”。
3、最后選擇里面“工作表”點(diǎn)擊即可完成添加。