unity中读取和写入Excel表信息

    xiaoxiao2022-07-06  212

    原博客地址:https://blog.csdn.net/luoyikun/article/details/81012065

    需要加入库文件 Excel.dll 和ICSharpCode.SharpZipLib库文件,官方链接 http://exceldatareader.codeplex.com/

    读取Excel 需要添加命名空间    using Excel; using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Data; using System.IO; using Excel; public class DoExcel { public static DataSet ReadExcel(string path) { FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read); Debug.LogError("stream " + stream); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //读取2007以后版本 //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); //读取2003以后版本 DataSet result = excelReader.AsDataSet(); Debug.LogError("result " + result); excelReader.Close(); 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); } } return result; } public static List<DepenceTableData> Load(string path) { Debug.LogError(path); List<DepenceTableData> _data = new List<DepenceTableData>(); DataSet resultds = ReadExcel(path); int column = resultds.Tables[0].Columns.Count; int row = resultds.Tables[0].Rows.Count; Debug.LogWarning(column + " " + row); for (int i = 1; i < row; i++) { DepenceTableData temp_data; temp_data.instruct = resultds.Tables[0].Rows[i][0].ToString(); temp_data.word = resultds.Tables[0].Rows[i][1].ToString(); Debug.Log(temp_data.instruct + " " + temp_data.word); _data.Add(temp_data); } return _data; } } public struct DepenceTableData { public string word; public string instruct; } 写入Excel 此时需要一个Excel.dll的姐妹,EPPlus.dll 官方链接 https://epplus.codeplex.com/releases/view/118053 需要添加命名空间 using OfficeOpenXml; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using OfficeOpenXml; using System.IO; public class PrintExcel : MonoBehaviour { public List<DepenceTableData> listdata; void Start () { //读 Text T = GameObject.Find("Canvas/Text").GetComponent<Text>(); T.text = "";//清空一开始的文本 listdata = DoExcel.Load(Application.streamingAssetsPath + "/Test2003.xls"); Debug.LogError("listdata"+listdata); foreach (var listing in listdata) { Debug.LogError("listing.instruct" + listing.instruct); Debug.LogError("listing.word" + listing.word); //print(listing.instruct + " " + listing.word); T.text += (listing.instruct + " " + listing.word + "\n").ToString(); } //写 WriteExcel(Application.streamingAssetsPath + "/Test2007.xlsx"); } public static void WriteExcel(string outputDir) { //string outputDir = EditorUtility.SaveFilePanel("Save Excel", "", "New Resource", "xlsx"); FileInfo newFile = new FileInfo(outputDir); if (newFile.Exists) { newFile.Delete(); // ensures we create a new workbook newFile = new FileInfo(outputDir); } using (ExcelPackage package = new ExcelPackage(newFile)) { // add a new worksheet to the empty workbook ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1"); //Add the headers worksheet.Cells[1, 1].Value = "ID"; worksheet.Cells[1, 2].Value = "Product"; worksheet.Cells[1, 3].Value = "Quantity"; worksheet.Cells[1, 4].Value = "Price"; worksheet.Cells[1, 5].Value = "Value"; //Add some items... worksheet.Cells["A2"].Value = 12001; worksheet.Cells["B2"].Value = "Nails"; worksheet.Cells["C2"].Value = 37; worksheet.Cells["D2"].Value = 3.99; worksheet.Cells["A3"].Value = 12002; worksheet.Cells["B3"].Value = "Hammer"; worksheet.Cells["C3"].Value = 5; worksheet.Cells["D3"].Value = 12.10; worksheet.Cells["A4"].Value = 12003; worksheet.Cells["B4"].Value = "Saw"; worksheet.Cells["C4"].Value = 12; worksheet.Cells["D4"].Value = 15.37; //save our new workbook and we are done! package.Save(); } } }

     

    最新回复(0)