Unity3D研究院之MAC&Windows跨平台解析Excel

转载注明出处:http://www.xuanyusong.com/archives/2429

Excel 和 ICSharpCode.SharpZipLib 是第三方开发包(后面我会附带下载地址的), 这个两个东西必须存在。这个开发包是跨平台的,并且完全独立不依赖微软的那一套东东。即时你的电脑中没有安装Excel也同样是可以很好的解析

通过代码来解析UserLevel.xlsx

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();
		//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);
		//	}
		//}	
        
        

		FileStream stream = File.Open(Application.dataPath + "/UserLevel1.xlsx", FileMode.Open, FileAccess.Read);
		IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
		do{
			// sheet name
			Debug.Log(excelReader.Name);
			while (excelReader.Read()) {
				for (int i = 0; i < excelReader.FieldCount; i++) {
					string value = excelReader.IsDBNull(i) ? "" : excelReader.GetString(i);
					Debug.Log(value);
				}
			}
		}while(excelReader.NextResult());
	}
 
}

result.Tables[0].Rows.Count;

这里0表示第一个sheet, 如果你有多个sheet的话,可以写sheet的名子

result.Tables[“mySheet”].Rows.Count;

http://exceldatareader.codeplex.com/ 也可以在这里查阅详细的文档

本文下载地址: http://vdisk.weibo.com/s/qDm4IY-Ht09-  

另:

使用ExcelPackage生成Excel2007电子表格

        ExcelPackage是一个在服务端生成Excel 2007 电子表格的Library. 下面的代码是生成XLSX文件示例:

FileInfo XLSXFile = new FileInfo(XLSXFileName);
using (ExcelPackage xlPackage = new ExcelPackage(XLSXFile))
{
    ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets.Add("Sheet1");
 
    int row = 1;
    foreach (DataRow dr in dataTable.Rows)
    {
        int col = 1;
 
        foreach (object o in dr.ItemArray)
        {
            worksheet.Cell(row, col++).Value = o.ToString().Trim();
        }
 
        row++;
    }
 
    xlPackage.Save();
}

猜你喜欢

转载自blog.csdn.net/linxinfa/article/details/84344955
今日推荐