问题描述
我是一个刚学习C#的菜鸟!以前也没学过编程之类的语言!!现在在做一个小程序!!我用的是c#2005,大体是把一个excel中的数据显示在一个listview当中。我也在主窗体上加了一个lable控件,用来显示读取的数据,因为我还不是很会用listview控件。我写了一个访问excel的类:publicExcelUse(){}Excel.ApplicationmyExcel=null;Excel.WorkbookmyBook=null;Excel.WorksheetmySheet=null;Randomrandom=newRandom();stringStrWord=null;stringStrMean=null;WordInfomyWord=null;publicvoidOpenExcel()//先打开excel{myExcel=newMicrosoft.Office.Interop.Excel.Application();myBook=myExcel.Workbooks.Open(@"E:Text2005单词单词binDebugword.xls",Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);}publicvoidCloseExcel()//关闭excel{myExcel.Quit();}publicvoidRandomOpenSheet()//随即打开sheet中的任意一个sheet,我设置了26个sheet。{intiSheet=random.Next(1,26);mySheet=(Excel.Worksheet)myBook.Sheets[iSheet];}publicvoidOpenRows()//读取sheet中的任意一个单元格的数据。{intiRows=mySheet.UsedRange.Rows.Count;for(inti=2;i<=iRows;i++){StrWord=((Excel.Range)mySheet.Cells[i,1]).Text.ToString();StrMean=((Excel.Range)mySheet.Cells[i,2]).Text.ToString();}}publicvoidRandomOpenRows()随即读取sheet中的任意一个单元格数据{intiRows=mySheet.UsedRange.Rows.Count;intiRow=random.Next(2,iRows);StrWord=((Excel.Range)mySheet.Cells[iRow,1]).Text.ToString();StrMean=((Excel.Range)mySheet.Cells[iRow,2]).Text.ToString();}//我又定义了一个类wordinfo,用来记录rows中的数据。publicWordInfoGetWord()//这个方法是用来记录读取sheet中的单元格数据。当我调用这个方法时,在窗体的lable控件中将显示一条读取的数据。这些我一定都搞定了。{myWord=newWordInfo();myWord.Word=StrWord;myWord.Mean=StrMean;returnmyWord;}现在我的问题是:我想把一个sheet中的所有数据都能读取出来,因为上面的方法只能读取一条数据。现在想写一个方法,不知道怎么写这个方法。好像用个list<>方法实现~~。我现在不会写,哪位能帮忙写一下??还有怎么样把这些数据显示在listview中,哪位能帮我解决啊??真的急着解决这个问题啊~~我刚来的,分数不多,等有分了再给你们加分。哪位拜托帮忙一下啊!!希望有代码,要不我看不懂。}}
解决方案
解决方案二:
解决方案三:
你將Excel中的數據讀到一個DataTable中然后Listview直接綁定這個DataTable就可以了。
解决方案四:
yes
解决方案五:
不会用DataTable,我没有过啊不真的怎么用~~我刚学
解决方案六:
usingSystem;usingSystem.Data;usingSystem.Data.OleDb;usingSystem.Web.UI.WebControls;usingSystem.Xml;publicpartialclassDefault3:System.Web.UI.Page{//這個是用來抓文件地址的,把文件地址寫死了不好publicstringFileName{get{if(ViewState["FileName"]!=null)returnViewState["FileName"].ToString();else{ViewState["FileName"]=string.Empty;returnstring.Empty;}}set{ViewState["FileName"]=value;}}protectedvoidPage_Load(objectsender,EventArgse){}protectedvoidbtnShowPO2_Click(objectsender,EventArgse){if(FileUpload1.PostedFile.ContentLength>0){FileName=FileUpload1.PostedFile.FileName;GridviewBind(GridView1,ExcelToDataTable(FileName,"PO$"));GridviewBind(GridView2,ExcelToDataTable(FileName,"POLine$"));GridviewBind(GridView3,ExcelToDataTable(FileName,"PODetail$"));}}//我是用Gridview綁定的,Listview和Gridview差不多,你稍作修改publicvoidGridviewBind(GridViewGridview,DataTabledt){Gridview.DataSource=dt;Gridview.DataBind();}//這里就是將Excel轉換成DataTablepublicDataTableExcelToDataTable(stringfileName,stringsheetName){DataTabledt=newDataTable();try{OleDbConnectionconn=newOleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;datasource="+fileName+";ExtendedProperties='Excel8.0;HDR=YES;IMEX=1;'");conn.Open();OleDbDataAdapterda=newOleDbDataAdapter("SELECT*FROM["+sheetName+"]",conn);DataSetds=newDataSet();da.Fill(ds);conn.Close();returnds.Tables[0];}catch{returndt;}}}
解决方案七:
先谢谢5楼的朋友~~我研究一下~~不过谁能帮我用我写的那个方法处理处理最好因为我就对这样读取数据比较懂点~~我再等会,一会结贴~~谢谢各位~~