转载注明出处: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是一个在服务端生成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();
}