将Excel文档转化为Txt文档或者JSON和XML文档,然后在游戏中读取
使用OLEDB操作Excel
本文源自Siki老师的视频教程
2、连接字符串
旧版本Excel文档.xls
"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
新版本Excel文档.xlsx
"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
代码部分
一、首先新建一个OLEBD对象,用来和数据源(即Excel文档)建立连接
class Program
{
static void Main(string[] args)
{
该对象位于Using System.Data.OleDb;命名空间下
OleDbConnection connection=new OleDbConnection();
在我们创建对象的时候需要定义连接的字符串,即笔记开始的部分和要连接的文件名(数据源)
static void Main(string[] args)
{
string fileName = "装备信息.xls";//文件名(数据源)
string connectionString= "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
//创建连接到数据源的对象
OleDbConnection connection=new OleDbConnection(connectionString);
connection.Open();//打开连接
二、开始查询
我们使用OleDbDataAdapter对象对数据做查询,该对象需要连个参数,一个是查询命令,表示从哪个表格开始,一个是连接对象
string sql = "select * from [Sheet1$]";//查询命令,表示从表格Sheet1里面开始查询
//新建一个对象进行查询
OleDbDataAdapter adapter=new OleDbDataAdapter(sql,connection);
三、把表格存放到DataSet对象中
DataSet dataSet=new DataSet();//用来存放数据,可以存放很多张表格
adapter.Fill(dataSet);//表示把查询的结果放到dataSet中
connection.Close();
四、取得第一张表格
//取得数据
DataTableCollection tableCollection = dataSet.Tables;//获取当前集合中所有的表格
//因为我们只往dataSet中放了一张表格所以这里取得索引为0的表格就是我们刚刚查询到的表格
DataTable table = tableCollection[0];
//取得表格中的数据
DataRowCollection rowCollection= table.Rows;//返回一个行的集合,
//遍历该集合把每一行的数据输出
foreach (DataRow row in rowCollection)
{
//取得表格中前8列的数据 索引0-7
for (int i = 0; i < 8; i++)
{
Console.Write(row[i]+" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
代码整体版,如下
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _01
{
class Program
{
static void Main(string[] args)
{
string fileName = "装备信息.xls";//文件名(数据源)
string connectionString= "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
//创建连接到数据源的对象
OleDbConnection connection=new OleDbConnection(connectionString);
connection.Open();//打开连接
string sql = "select * from [Sheet1$]";//查询命令,表示从表格Sheet1里面开始查询
//新建一个对象进行查询
OleDbDataAdapter adapter=new OleDbDataAdapter(sql,connection);
DataSet dataSet=new DataSet();//用来存放数据,可以存放很多张表格
adapter.Fill(dataSet);//表示把查询的结果放到dataSet中
connection.Close();
//取得数据
DataTableCollection tableCollection = dataSet.Tables;//获取当前集合中所有的表格
//因为我们只往dataSet中放了一张表格所以这里取得索引为0的表格就是我们刚刚查询到的表格
DataTable table = tableCollection[0];
//取得表格中的数据
DataRowCollection rowCollection= table.Rows;//返回一个行的集合,
//遍历该集合把每一行的数据输出
foreach (DataRow row in rowCollection)
{
//取得表格中前8列的数据 索引0-7
for (int i = 0; i < 8; i++)
{
Console.Write(row[i]+" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
把Excel解析成字符串,然后将字符串进行分割读取单个的信息
跨平台读取Excel文档
下方是需要用到的第三方插件,本方法摘自宣雨松博客
http://www.xuanyusong.com/archives/2429
http://pan.baidu.com/s/1c1Zw0d6 上述三个插件下载链接
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using Excel;
using System.Data;
public class NewBehaviourScript : MonoBehaviour
{
void Start ()
{
XLSX();
}
void XLSX()
{
FileStream stream = File.Open(Application.dataPath + "/UserLevel.xlsx", FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
DataSet result = excelReader.AsDataSet();//存储到DataSet中
int columns = result.Tables[0].Columns.Count;//列数
int rows = result.Tables[0].Rows.Count;//行数
for(int i = 0; i< rows; i++)
{
for(int j =0; j < columns; j++)
{
string nvalue = result.Tables[0].Rows[i][j].ToString();
Debug.Log(nvalue);
}
}
}
}
最后我们读取到了一个字符串,我们可以把字符串改为字符串数组,利用字符串拆分函数.Split()进行拆分,该函数返回一个字符串数组