文档解析之Excel策划文档的读取

来源:互联网 发布:网络招人平台有哪些 编辑:程序博客网 时间:2024/05/18 03:01

将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文档)建立连接

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
该对象位于Using System.Data.OleDb;命名空间下
  1. OleDbConnection connection=new OleDbConnection();
在我们创建对象的时候需要定义连接的字符串,即笔记开始的部分和要连接的文件名(数据源)
  1. static void Main(string[] args)
  2. {
  3. string fileName = "装备信息.xls";//文件名(数据源)
  4. string connectionString= "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
  5. //创建连接到数据源的对象
  6. OleDbConnection connection=new OleDbConnection(connectionString);
  7. connection.Open();//打开连接
二、开始查询
我们使用OleDbDataAdapter对象对数据做查询,该对象需要连个参数,一个是查询命令,表示从哪个表格开始,一个是连接对象
  1. string sql = "select * from [Sheet1$]";//查询命令,表示从表格Sheet1里面开始查询
  2. //新建一个对象进行查询
  3. OleDbDataAdapter adapter=new OleDbDataAdapter(sql,connection);
三、把表格存放到DataSet对象中
  1. DataSet dataSet=new DataSet();//用来存放数据,可以存放很多张表格
  2. adapter.Fill(dataSet);//表示把查询的结果放到dataSet中
  3. connection.Close();

四、取得第一张表格
  1. //取得数据
  2. DataTableCollection tableCollection = dataSet.Tables;//获取当前集合中所有的表格
  3. //因为我们只往dataSet中放了一张表格所以这里取得索引为0的表格就是我们刚刚查询到的表格
  4. DataTable table = tableCollection[0];

五、去的表格中的所有数据
  1. //取得表格中的数据
  2. DataRowCollection rowCollection= table.Rows;//返回一个行的集合,
  3. //遍历该集合把每一行的数据输出
  4. foreach (DataRow row in rowCollection)
  5. {
  6. //取得表格中前8列的数据 索引0-7
  7. for (int i = 0; i < 8; i++)
  8. {
  9. Console.Write(row[i]+" ");
  10. }
  11. Console.WriteLine();
  12. }
  13. Console.ReadKey();
  14. }
  15. }
代码整体版,如下
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.OleDb;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace _01
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. string fileName = "装备信息.xls";//文件名(数据源)
  15. string connectionString= "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
  16. //创建连接到数据源的对象
  17. OleDbConnection connection=new OleDbConnection(connectionString);
  18. connection.Open();//打开连接
  19. string sql = "select * from [Sheet1$]";//查询命令,表示从表格Sheet1里面开始查询
  20. //新建一个对象进行查询
  21. OleDbDataAdapter adapter=new OleDbDataAdapter(sql,connection);
  22. DataSet dataSet=new DataSet();//用来存放数据,可以存放很多张表格
  23. adapter.Fill(dataSet);//表示把查询的结果放到dataSet中
  24. connection.Close();
  25. //取得数据
  26. DataTableCollection tableCollection = dataSet.Tables;//获取当前集合中所有的表格
  27. //因为我们只往dataSet中放了一张表格所以这里取得索引为0的表格就是我们刚刚查询到的表格
  28. DataTable table = tableCollection[0];
  29. //取得表格中的数据
  30. DataRowCollection rowCollection= table.Rows;//返回一个行的集合
  31. //遍历该集合把每一行的数据输出
  32. foreach (DataRow row in rowCollection)
  33. {
  34. //取得表格中前8列的数据 索引0-7
  35. for (int i = 0; i < 8; i++)
  36. {
  37. Console.Write(row[i]+" ");
  38. }
  39. Console.WriteLine();
  40. }
  41. Console.ReadKey();
  42. }
  43. }
  44. }
 
 
把Excel解析成字符串,然后将字符串进行分割读取单个的信息


跨平台读取Excel文档

下方是需要用到的第三方插件,本方法摘自宣雨松博客http://www.xuanyusong.com/archives/2429
 http://pan.baidu.com/s/1c1Zw0d6    上述三个插件下载链接
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.IO;
  7. using Excel;
  8. using System.Data;
  9. public class NewBehaviourScript : MonoBehaviour
  10. {
  11. void Start ()
  12. {
  13. XLSX();
  14. }
  15. void XLSX()
  16. {
  17. FileStream stream = File.Open(Application.dataPath + "/UserLevel.xlsx", FileMode.Open, FileAccess.Read);
  18. IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
  19. DataSet result = excelReader.AsDataSet();//存储到DataSet中
  20. int columns = result.Tables[0].Columns.Count;//列数
  21. int rows = result.Tables[0].Rows.Count;//行数
  22. for(int i = 0; i< rows; i++)
  23. {
  24. for(int j =0; j < columns; j++)
  25. {
  26. string nvalue = result.Tables[0].Rows[i][j].ToString();
  27. Debug.Log(nvalue);
  28. }
  29. }
  30. }
  31. }

最后我们读取到了一个字符串,我们可以把字符串改为字符串数组,利用字符串拆分函数.Split()进行拆分,该函数返回一个字符串数组
0 0