C如何读取Excel表格数据并显示到GridView控件共12页.docx
- 文档编号:11516455
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:7
- 大小:35KB
C如何读取Excel表格数据并显示到GridView控件共12页.docx
《C如何读取Excel表格数据并显示到GridView控件共12页.docx》由会员分享,可在线阅读,更多相关《C如何读取Excel表格数据并显示到GridView控件共12页.docx(7页珍藏版)》请在冰豆网上搜索。
C如何读取Excel表格数据并显示到GridView控件共12页
C#如何读取Excel表格数据并显示到GridView控件
2008/05/0600:
36
近日,有个项目,需要用Web形式将Excel表格中的数据导入到数据库中,为了简化问题的解决,现在先将表中数据导入到GridView控件上.
代码如下:
protectedvoidButton1_Click(objectsender,EventArgse)
...{
stringfilepath=FileUpload1.PostedFile.FileName;
ReadExcel(filepath,gdBom);
}
publicvoidReadExcel(stringsExcelFile,GridViewdgBom)
...{
DataTableExcelTable;
DataSetds=newDataSet();
//Excel的连接
OleDbConnectionobjConn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+sExcelFile+";"+"ExtendedProperties=Excel8.0;");
objConn.Open();
DataTableschemaTable=objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
stringtableName=schemaTable.Rows[0][2].ToString().Trim();//获取Excel的表名,默认值是sheet1
stringstrSql="select*from["+tableName+"]";
OleDbCommandobjCmd=newOleDbCommand(strSql,objConn);
OleDbDataAdaptermyData=newOleDbDataAdapter(strSql,objConn);
myData.Fill(ds,tableName);//填充数据
dgBom.DataSource=ds;
dgBom.DataBind();
objConn.Close();
ExcelTable=ds.Tables[tableName];
intiColums=ExcelTable.Columns.Count;//列数
intiRows=ExcelTable.Rows.Count;//行数
//定义二维数组存储Excel表中读取的数据
string[,]storedata=newstring[iRows,iColums];
for(inti=0;i for(intj=0;j ...{ //将Excel表中的数据存储到数组 storedata[i,j]=ExcelTable.Rows[i][j].ToString(); } intexcelBom=0;//记录表中有用信息的行数,有用信息是指除去表的标题和表的栏目,本例中表的用用信息是从第三行开始 //确定有用的行数 for(intk=2;k if(storedata[k,1]! ="") excelBom++; if(excelBom==0) ...{ Response.Write(" ')"); } else ...{ //LoadDataToDataBase(storedata,excelBom)//该函数主要负责将storedata中有用的数据写入到数据库中,在此不是问题的关键省略 } } 运行效果如下图: 选择BOM表的路径,点确定后 类别: c#| |添加到搜藏|分享到i贴吧|浏览(1391)|评论 (7) 上一篇: 验证文件上传有效类型的正则表达... 下一篇: C#数值结果表(格式化字符串) 相关文章: • sun: 将gridview控件中数据以指定... • 怎样将Gridview控件的内容导出为... • 类型"GridView"的控件必须放在... • 用户控件上的GridView如何导入,... • 使用Gridview空间导出到Excel,Gr... • ASP的GridView控件中的数据... • ASP2.0,C#----利用GridView... • 扩展GridView控件—支持Excel... • GridView不使用数据源控件,导出... • VB,C#GridView导出到excel,data... 更多>> 使用C#读取Word表格数据 读取Word表格数据的方法 1//将读取Word表格封装与方法中。 2publicstringReadWord(stringfileName,introwIndex,intcolIndex) 3{ 4 ApplicationClasscls=null; 5 Documentdoc=null; 6 7 Tabletable=null; 8 objectmissing=Missing.Value; 9 10 objectpath=fileName; 11 cls=newApplicationClass(); 12 13 try 14 { 15 doc=cls.Documents.Open 16 (refpath,refmissing,refmissing,refmissing, 17 refmissing,refmissing,refmissing,refmissing, 18 refmissing,refmissing,refmissing,refmissing, 19 refmissing,refmissing,refmissing,refmissing); 20 table=doc.Tables[1]; 21 stringtext=table.Cell(rowIndex,colIndex).Range.Text.ToString(); 22 text=text.Substring(0,text.Length-2); //去除尾部的mark 23 returntext; 24 } 25 catch(Exceptionex) 26 { 27 28 returnex.Message; 29 } 30 finally 31 { 32 if(doc! =null) 33 doc.Close(refmissing,refmissing,refmissing); 34 cls.Quit(refmissing,refmissing,refmissing); 35 } 36} 这个方法用于读取Word表格中某个单元格的数据。 其中的参数分别为文件名(包括路径),行号,列号。 由于考虑到代码复用,我将代码写成了一个类。 此外,通过审视代码可以发现,如果要多次读取同一文件中的不同的单元格数据会造成频繁的打开、关闭Word程序;因此,我将代码进行优化。 在我做优化的时候突然想起来ADO的SqlConnection和SqlCommand类。 这两个类我常常用做数据库操作,一般用到的方法顺序都是: 打开数据库连接,执行数据库查询,关闭数据库连接。 我没有使用到两个类,我将这段代码封装于一个类中。 使用Open、Close控制Word文档的打开和关闭,使用WordTableRead方法读取表格中的数据。 这样对于读取多个单元格中的数据,每次只需要打开、关闭一次Word程序即可,大大的节约了资源的开销和节省了时间,提高的读取效率。 此外,对于代码的优化还有可以读取指定表格中数据。 下图显示了这个类的结构,代码及相应注释附在图的下方: classWordTableRead 2{ 3 privatestringfileName; 4 privateApplicationClasscls=null; 5 privateDocumentdoc=null; 6 privateTabletable=null; 7 privateobjectmissing=Missing.Value; 8 //Word是否处于打开状态 9 privateboolopenState; 10 11 12 /**//// 13 ///自定义构造方法 14 /// 15 /// 16 publicWordTableRead(stringfileName) 17 { 18 this.fileName=fileName; 19 } 20 21 /**//// 22 ///打开Word文档 23 /// 24 publicvoidOpen() 25 { 26 objectpath=fileName; 27 cls=newApplicationClass(); 28 try 29 { 30 doc=cls.Documents.Open 31 (refpath,refmissing,refmissing,refmissing, 32 refmissing,refmissing,refmissing,refmissing, 33 refmissing,refmissing,refmissing,refmissing, 34 refmissing,refmissing,refmissing,refmissing); 35 openState=true; 36 } 37 catch 38 { 39 openState=false; 40 } 41 } 42 43 /**//// 44 ///返回指定单元格中的数据 45 /// 46 /// 47 /// 48 /// 49 /// 50 publicstringReadWord(inttableIndex,introwIndex,intcolIndex) 51 { 52 //GivethevaluetothetowInt32params. 53 54 try 55 { 56 if(openState==true) 57 { 58 table=doc.Tables[tableIndex]; 59 stringtext=table.Cell(rowIndex,colIndex).Range.Text.ToString(); 60 text=text.Substring(0,text.Length-2); //去除尾部的mark 61 returntext; 62 } 63 else 64 { 65 return""; 66 } 67 } 68 catch 69 { 70 return"Error"; 71 } 72 } 73 74 /**//// 75 ///关闭Word文档 76 /// 77 publicvoidClose() 78 { 79 if(openState==true) 80 { 81 if(doc! =null) 82 doc.Close(refmissing,refmissing,refmissing); 83 cls.Quit(refmissing,refmissing,refmissing); 84 } 85 } 86} 尽管如此,我还是认为这个类的设计仍然存在缺陷。 每次测试这个类的时候,感觉数据读取的速度不是很令我满意;而且,这个类用于控制台应用程序的时候不会在屏幕上看到任何值,不明白应该如何改进代码。 希望朋友们能够给我提供一些改进此类的建议。 本文来自CSDN博客,转载请标明出处: http: //blog.csdn/kgdnui/archive/2009/09/14/4551781.aspx 为了您的安全,请只打开来源可靠的网址 打开网站 取消 来自: http: //hi.baidu/59le/blog/item/489ef1f825a17f04d8f9fdb7.html 希望以上资料对你有所帮助,附励志名言3条: 1、要接受自己行动所带来的责任而非自己成就所带来的荣耀。 2、每个人都必须发展两种重要的能力适应改变与动荡的能力以及为长期目标延缓享乐的能力。 3、将一付好牌打好没有什么了不起能将一付坏牌打好的人才值得钦佩。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 读取 Excel 表格 数据 显示 GridView 控件 12