随着Office 2007使用的日渐增长,我们升级了OleDB数据库的搜索引擎,更改为:
string mystring = "Provider = Microsoft.ACE.OLEDB.12.0 ; Data Source = '" + FilePath + "';Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";
升级后发现原来获取工作表名称的语句:
System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string tableName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim();
无法正确地获取到文件中默认的工作表顺序了,新的GetOleDbSchemaTable排序了。假设一个Excel,其中有三个工作表,第一个为“sheet2”,第二个为“sheet1”,第三个为“sheet3”。我只想读取第一个工作表及“sheet2”这张表。但是实际的获取结果却是"sheet1"->“sheet2"->"sheet3"。
同样的经过一轮的Google/Baidu后未找到很多的解决方法,最后只好通过引用com组件:Microsoft.Office.Interop.Excel.dll来实现。代码片断如下:
//创建一个Application对象
app = new Excel.ApplicationClass();
//打开一个WorkBook
workBook = app.Workbooks.Open(fileName,
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);
//得到WorkSheet对象
workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);
((Excel._Worksheet)workSheet).Activate();
//获得工作表名称
string sheetName = workSheet.Name;
ASP.NET MVC 目前已经更新到了RC版,相对而言版本和功能上都较为稳定,如果有兴趣的童鞋可以下载了。在一些相关的介绍中都有提到ASP.NET MVC 2支持一个叫“区域(areas)”的新特性,但是都没有对其有一个比较清晰的应用,下面我将简单地展示一下Areas的用法。