using UnityEngine; using System.Collections; using System; using System.Data; using System.Data.Odbc; public class EXCELREADER { // our odbc connector OdbcConnection odbcCon = null; /// /// /// /// public EXCELREADER(string filepath) { string connect = "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; Dbq=" + filepath + ";"; Debug.Log(connect); odbcCon = new OdbcConnection(connect); } public void Open() { odbcCon.Open(); } public void Close() { odbcCon.Close(); } OdbcCommand odbcCmd; public void GetSheet(String sheetname) { string query = "SELECT * FROM [" + sheetname + "$]"; if (odbcCmd != null) odbcCmd = null; odbcCmd = new OdbcCommand(query, odbcCon); } public DataTable GetDataFrom() { // table to hold the data DataTable dtYourData = new DataTable("YourData"); // lets use a datareader to fill that table! OdbcDataReader rData = odbcCmd.ExecuteReader(); // now lets blast that into the table by sheer man power! dtYourData.Load(rData); //// Use a DataTable object's DataColumnCollection. //DataColumnCollection columns = dtYourData.Columns; //// Print the ColumnName and DataType for each column. //foreach (DataColumn column in columns) //{ // Debug.Log(column.ColumnName); // Debug.Log(column.DataType); //} // close that reader! rData.Close(); return dtYourData; } public void readXLS( string filetoread) { // Must be saved as excel 2003 workbook, not 2007, mono issue really string con = "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; Dbq="+filetoread+";"; Debug.Log(con); //string yourQuery = "SELECT * FROM [Sheet1$]"; string yourQuery = "SELECT * FROM [ºìÂÞº£°¶_Õ½¶·µØͼ1_MAP$]"; // our odbc connector OdbcConnection oCon = new OdbcConnection(con); // our command object OdbcCommand oCmd = new OdbcCommand(yourQuery, oCon); // table to hold the data DataTable dtYourData = new DataTable("YourData"); // open the connection oCon.Open(); // lets use a datareader to fill that table! OdbcDataReader rData = oCmd.ExecuteReader(); // now lets blast that into the table by sheer man power! dtYourData.Load(rData); // close that reader! rData.Close(); // close your connection to the spreadsheet! oCon.Close(); // wow look at us go now! we are on a roll!!!!! // lets now see if our table has the spreadsheet data in it, shall we? Debug.Log(dtYourData.Rows.Count + " " + dtYourData.Rows.Count); if(dtYourData.Rows.Count > 0) { // do something with the data here // but how do I do this you ask??? good question! for (int i = 0; i < dtYourData.Rows.Count; i++) { // for giggles, lets see the column name then the data for that column! //Debug.Log(dtYourData.Columns[0].ColumnName + " : " + dtYourData.Rows[i][dtYourData.Columns[0].ColumnName].ToString()); Debug.Log(dtYourData.Columns[0].ColumnName + " : " + dtYourData.Rows[i][dtYourData.Columns[0].ColumnName].ToString() + " | " + dtYourData.Columns[1].ColumnName + " : " + dtYourData.Rows[i][dtYourData.Columns[1].ColumnName].ToString() + " | " + dtYourData.Columns[2].ColumnName + " : " + dtYourData.Rows[i][dtYourData.Columns[2].ColumnName].ToString()); } } } }