⑴ asp.net中如何實現excel文檔的轉換
asp.net Excel導入和導出
1、Excel數據導入到資料庫中:
//該方法實現從Excel中導出數據到DataSet中,其中filepath為Excel文件的絕對路徑,sheetname為表示那個Excel表; public DataSet ExcelDataSource( string filepath , string sheetname ) ...{ string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); OleDbDataAdapter oada = new OleDbDataAdapter ( "select * from [" + sheetname + "$]", strConn ); DataSet ds = new DataSet (); oada.Fill ( ds ); return ds ; }
上面的代碼實現了將Excel中的數據寫進DataSet中,實現了這一步後,你可以按照自己的需要對獲得DataSet進行處理,需要注意的一個問題是,你必須要指定sheetname,即Excel中的哪一個工作單需要導入,否則會出現錯誤。
2、如何從Excel中獲得工作單(sheetname):
//獲得Excel中的所有sheetname。public ArrayList ExcelSheetName ( string filepath )...{ ArrayList al = new ArrayList (); string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open (); DataTable sheetNames = conn.GetOleDbSchemaTable (System.Data.OleDb.OleDbSchemaGuid.Tables,new object[]...{null,null,null,"TABLE"}); conn.Close (); foreach ( DataRow dr in sheetNames.Rows ) ...{ al.Add ( dr[2] ); } return al;}通過這兩步,就基本可以實現將Excel導入到資料庫中了,具體實現中的細節問題,你可以自己在實踐中獲得。
3、將資料庫中的數據導入Excel中,在這里我講敘自己實踐中的兩個方法:
方法一:從最基本的寫文件入手,將從資料庫中讀出來的數據寫入到Excel中;
//該方法實現將數據導入到Excel文件中,其中的DataTable dt就是你需要將數據寫入到Excel中的數據;public void ExportExcel( DataTable dt , StreamWriter w )...{ try ...{ for( int i = 0 ; i < dt.Columns.Count ; i ++ ) ...{ w.Write ( dt.Columns[i] ); w.Write( ' ' ); } w.Write ( " " );
object[] values = new object [dt.Columns.Count]; foreach ( DataRow dr in dt.Rows ) ...{ values = dr.ItemArray ; for ( int i = 0 ; i < dt.Columns.Count ; i++ ) ...{ w.Write ( values[i] ); w.Write ( ' ' ); } w.Write ( " " ); } w.Flush(); w.Close(); } catch ...{ w.Close(); }}
StreamWriter w就是你自己創建的一個流,創建該數據流時,你需要自己指定需要將數據寫入到那個文件,即指定文件路徑,要實現下載的話,就可以簡單的用Response.Redirect ( "指定需要被下載的文件路徑" );
方法二:該方法實現的是將數據從DataGrid中導入到Excel中:
//filename為Excel的名字,ToExcelGrid就是數據源,在此為DataGrid數據源;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.GetEncoding("utf-8");//設置輸出流為簡體中文 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();}
用該方法的時候,需要注意將DataGrid數據源中的允許翻頁,允許排 序設置成"false",同時一些特殊行進行需要將其設置成不可視,如編輯行等,若不這樣的話,用該方法實現的數據導入到Excel,會出現異常「需要將 XXX放入到一個具有runat=server的form窗體中」,我具體忘了XXX代表的意思,你可以在實踐中嘗試一下,就可以知道出現的錯誤。
3. .Net中導入Excel數據時應注意的事
從Excel向資料庫導數據的時候,最常用的方式是使用Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:"Demo.xls; Extended Properties='Excel 8.0;HDR=YES;IMEX=1'。 但 是當一列中既有數字,又有文本的時候,總是莫名其妙的出現部分數據讀不到的現象,有時是讀不到文本數據,有時是讀不到數字數據。這是為什麼呢?原來 OleDb會智能的根據前8行的數據判斷Excel的列類型,當文本數據的行數 > 數字數據的行數時,列類型被設為文本,否則為數字。那我想讀到全部的數據該做些什麼呢?這位同學問得好,秘密就在於IMEX=1,以導入模式讀取數據。
⑵ net如何讀取客戶端Excel文件
是使用過抄oledb的方式
string connExcel;
connExcel = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", this.ExcelFilePhysicalPath);
OleDbConnection oleConn = new OleDbConnection(connExcel);
然後可以通過TSQL來查詢等
不過表面得為[sheet名$]後邊得加個$
⑶ ASP.NET操作Excel
public bool panan()
{
for (int i = 0; i < ds.Tables[0].Columns; i++)
{
if (ds.Tables[1].Columns[i].ToString() != "aaa")
{
continue;
}
else
{
return true;
}
return false;
}
}
⑷ .NET 導出 Excel文件
有2種方法哈,
可以利用oledb進行操作,此方法主要是針對表格形式的excel比較適用。此時,每一個sheet都是一個datatable。
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
String sql = "insert[Sheet1$] (1,2,3) values (a,b,c) ";
OleDbCommand cmd = new OleDbCommand();
cmd.ExecuteNonQuery();
還有就是利用office自己提供的dll進行操作。
Workbook wBook = app.Workbooks.Add(true);
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
⑸ .net關於操作excel的問題
//---------設置背景顏色
objectSheet.get_Range(objectSheet.Cells[RowIndex,ColumnIndex],objectSheet.Cells[RowIndex,ColumnIndex]).Cells.Interior.Color =Color;
//---設置字體顏色
objectSheet.get_Range(objectSheet.Cells[RowIndex,ColumnIndex],objectSheet.Cells[RowIndex,ColumnIndex]).Font.Color = Color;
//----設置字體大小
objectSheet.get_Range(objectSheet.Cells[RowIndex,ColumnIndex],objectSheet.Cells[RowIndex,ColumnIndex]).Font.Size = Size;
請採納。
⑹ Vb.net 操作Excel如何選擇sheet
具體操作如下:
首先,須在項目里引用: 添加引用->Com->Microsoft Excel 9.0 Object Library (這是EXCEL2000)
1 打開Excel: dim myexcel as new Excel.Application() myexcel.visible=true
2 添加新的工作簿: myexcel.Workbooks.add()
3 設定第二個工作表為活動工作表: myexcel.worksheets(2).Acivate()
4 打開指定的Excel文件: myexcel.workbooks.open("c:\my.xls")
5 顯示Excel窗口: myexcel.visible=true
6 更改Excel的標題欄: myexcel.caption="歡迎,歡迎!"
7 為Excel的單元格賦值: myexcel.cells(1,4).value=100 此語句使Excel當前工作表的第一行第四列,即D1單元格等於100, 也可以這樣寫: myexcel.Range("D1").value=100
8 設置指定列的寬度(單位:字元個數): myexcel.ActiveSheet.colums(1).columnwidth=20 設定當前工作表第1列的寬度為20
9 設置指定行的高度(單位:磅): myexcel.ActiveSheet.rows(1).rowHeight=1/0.035 1磅 =0.035厘米 設置第1行的高度為1CM
10 插入分頁符: myexcel.Activesheet.rows(20).pagebreak=1 在第20行前插入分頁符
11 刪除分頁符: myexcel.Activesheet.columns(20).pagebreak=0 在第20列前刪除分頁符
12 指定邊框線的寬度: myexcel.Activesheet.range("B3:D3").borders(1).weight=3 其中borders參數指定單元格邊框的位置: 1:左 2:右 3:頂 4:底 5:斜\ 6:斜/
13 指定邊框線條的類型: myexcel.Activesheet.range("B1:D3").borders(2).linestyle=1 此語句將當前工作表的B1:D3單元格的右邊框設置為實線 linestyle參數: 1:細實線 2:細虛線 3:點虛線 4:雙細實線
14 設置頁腳: myexcel.activesheet.pagesetup.centerfooter="第&p頁" 注意:設置頁眉頁腳時要保證計算機上裝有列印機,否則出錯!
15 設置頁眉: myexcel.activesheet.pagesetup.centerfooter="第&p頁"
16 設置頁眉到頂斷距離為2cm: myexcel.Activesheet.pagesetup.Headermargin=2/0.035
17 設置頁腳到底端距離為2cm: myexcel.Activesheet.pagesetup.Footermargin=2/0.035
18 設置頂邊邊距為2cm: myexcel.Activesheet.pagesetup.topmargin=2/0.035
19 設置底邊邊距為2cm: myexcel.Activesheet.pagesetup.Bottommargin=2/0.035
20 設置左邊邊距為2cm: myexcel.Activesheet.pagesetup.Leftmargin=2/0.035
21 設置右邊邊距為2cm: myexcel.Activesheet.pagesetup.Rightmargin=2/0.035
22 設置頁面水平居中: myexcel.activesheet.pagesetup.CenterHorizontally=true
23 設置頁面垂直居中: myexcel.activesheet.pagesetup.Centervertically=true
24 設置頁面紙張大小 (1,窄行 8.5*11 ;39 ,寬行 14*11): myexcel.activesheet.pagesetup.papersize=1
25 列印單元格網格線: myexcel.activesheet.pagesetup.PrintGridlines=true
26 復制整個工作表 : myexcel.activesheet.Usedrange.Copy
27 復制指定區域 : myexcel.activesheet.range("a1:b5").Copy
28 粘貼: myexcel.worksheets("sheet2").range("A1").PasteSpecial
29 在第2行前插入一行 : myexcel.activesheet.rows(2).Insert
30 在第2列前插入一列 : myexcel.Activesheet.Columns(2).Insert
31 合並 C4:D4 單元格: myexcel.Activesheet.Range("C4:D4").Merge()
32 自動調整第2列列寬: myexcel.activesheet.Columns(2).AutoFit
33 設置字體: myexcel.Activesheet.cells(2,1).font.name="黑體"
34 設置字體大小: myexcel.Activesheet.cells(2,1).font.size=25
35 設置字體為斜體: myexcel.Activesheet.cells(2,1).font.Italic=true
36 設置字體為粗體: myexcel.Activesheet.cells(2,1).font.Bold=true
37 清除單元格內容: myexcel.activesheet.cells(2,1).ClearContents
38 列印預覽工作表: myexcel.Activesheet.PrintPreview
39 列印工作表: myexcel.Activesheet.Printout
40 工作表另存為: myexcel.ActiveWorkbook.saveas("C:\book2.xls")
41 放棄存檔: myexcel.ActiveWorkbook.saved=false
42 關閉工作簿: myexcel.Workbooks.close
43 退出 Excel: myexcel.quit
清楚了這些命令,操作excel不就變的很輕鬆了。