unity 讀取荐绝、更改excel(.xlsx類型)數(shù)據(jù)

一挂疆、讀取excel

需要引入Excel.dll 和ICSharpCode.SharpZipLib庫文件。
dll下載地址:
https://pan.baidu.com/s/1mCt0QAVGephpASBFU4uBKg 提取碼:p6x3

引入命名空間:using Excel;
代碼:

/// <summary>
    ///返回數(shù)據(jù)的集合 
    ///數(shù)據(jù)的格式為 每一行為一條數(shù)據(jù)
    ///例:趙一|黨員|1年|趙一.png| 
    /// </summary>
    /// <returns></returns>
    public List<string> LoadData()
    {
        // StreamingAssets目錄下的  黨員信息.xlsx文件的路徑:Application.streamingAssetsPath + "/黨員信息.xlsx" 
        FileStream fileStream = File.Open(Application.streamingAssetsPath + "/黨員信息.xlsx", FileMode.Open, FileAccess.Read);
        IExcelDataReader excelDataReader = ExcelReaderFactory.CreateOpenXmlReader(fileStream);
        // 表格數(shù)據(jù)全部讀取到result里(引入:DataSet(
using System.Data;) 需引入 System.Data.dll到項目中去)
        DataSet result = excelDataReader.AsDataSet();

        // 獲取表格有多少列 
        int columns = result.Tables[0].Columns.Count;
        // 獲取表格有多少行 
        int rows = result.Tables[0].Rows.Count;
        // 根據(jù)行列依次打印表格中的每個數(shù)據(jù) 
        
        List<string> excelDta = new List<string>();

        //第一行為表頭亚兄,不讀取
        for (int i = 1; i < rows; i++)
        {
            value = null;
            all = null;
            for (int j = 0; j < columns; j++)
            {
                // 獲取表格中指定行指定列的數(shù)據(jù) 
                value = result.Tables[0].Rows[i][j].ToString();
                if (value == "")
                {
                    continue;
                }
                all = all + value + "|";
            }
            if (all != null)
            {
                print(all);
                excelDta.Add(all);
            }
        }
        return excelDta;
    }

二混稽、寫入excel數(shù)據(jù)

需要引入 EPPlus.dll 下載地址同上
引入命名空間:
using OfficeOpenXml;

/// <summary>
    /// list內(nèi)容格式
    /// 趙一|黨員|1年|趙一.png| 
    /// </summary>
    /// <param name="newList"></param>
    public void WriteExcel(List<string> newList)
    {
        //自定義excel的路徑

        string path = Application.streamingAssetsPath + "/黨員信息.xlsx";
       // print(Application.dataPath);

        FileInfo newFile = new FileInfo(path);

        if (newFile.Exists)
        {
            //創(chuàng)建一個新的excel文件

            newFile.Delete();

            newFile = new FileInfo(path);
        }
        
        //通過ExcelPackage打開文件
        using (ExcelPackage package = new ExcelPackage(newFile))
        {
            //在excel空文件添加新sheet

            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("message");
            //添加列名

            worksheet.Cells[1, 1].Value = "姓名";

            worksheet.Cells[1, 2].Value = "職務(wù)";

            worksheet.Cells[1, 3].Value = "黨齡";

            worksheet.Cells[1, 4].Value = "圖片名";
            
            for (int i = 0; i < newList.Count; i++)
            {
                string[] messages = newList[i].Split('|'); //趙一|黨員|1年|趙一.png| 
                string itemName = messages[0];
                string itemWork = messages[1];
                string itemYear = messages[2];
                string imageName = messages[3];
                //添加一行數(shù)據(jù)

                int num = i + 2;

                worksheet.Cells["A"+ num].Value = itemName;

                worksheet.Cells["B" + num].Value = itemWork;

                worksheet.Cells["C" + num].Value = itemYear;

                worksheet.Cells["D" + num].Value = imageName;
            }
            
            //保存excel
            package.Save();
            print("重寫完成");
        }
    }

為避免打包exe后讀取不到excel數(shù)據(jù),須將
Unity\Editor\Data\Mono\lib\mono\unity目錄下的一系列i18n相關(guān)dll導(dǎo)入項目Plugins文件夾中。
完整代碼:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using Excel;
using System.Data;
using OfficeOpenXml;
public class LoadExcelData : MonoBehaviour {
    public static LoadExcelData instance;
   
    string value;
    string all;

    private void Awake()
    {
        instance = this;
    }


    private void Start()
    {
      //  LoadData();
    }

    /// <summary>
    ///返回數(shù)據(jù)的集合 
    ///數(shù)據(jù)的格式為 每一行為一條數(shù)據(jù)
    ///例:趙一|黨員|1年|趙一.png| 
    /// </summary>
    /// <returns></returns>
    public List<string> LoadData()
    {
        // StreamingAssets目錄下的  黨員信息.xlsx文件的路徑:Application.streamingAssetsPath + "/黨員信息.xlsx" 
        FileStream fileStream = File.Open(Application.streamingAssetsPath + "/黨員信息.xlsx", FileMode.Open, FileAccess.Read);
        IExcelDataReader excelDataReader = ExcelReaderFactory.CreateOpenXmlReader(fileStream);
        // 表格數(shù)據(jù)全部讀取到result里
        DataSet result = excelDataReader.AsDataSet();

        // 獲取表格有多少列 
        int columns = result.Tables[0].Columns.Count;
        // 獲取表格有多少行 
        int rows = result.Tables[0].Rows.Count;
        // 根據(jù)行列依次打印表格中的每個數(shù)據(jù) 
        
        List<string> excelDta = new List<string>();

        //第一行為表頭匈勋,不讀取
        for (int i = 1; i < rows; i++)
        {
            value = null;
            all = null;
            for (int j = 0; j < columns; j++)
            {
                // 獲取表格中指定行指定列的數(shù)據(jù) 
                value = result.Tables[0].Rows[i][j].ToString();
                if (value == "")
                {
                    continue;
                }
                all = all + value + "|";
            }
            if (all != null)
            {
                print(all);
                excelDta.Add(all);
            }
        }
        return excelDta;
    }

    /// <summary>
    /// list內(nèi)容格式
    /// 趙一|黨員|1年|趙一.png| 
    /// </summary>
    /// <param name="newList"></param>
    public void WriteExcel(List<string> newList)
    {
        //自定義excel的路徑

        string path = Application.streamingAssetsPath + "/黨員信息.xlsx";
       // print(Application.dataPath);

        FileInfo newFile = new FileInfo(path);

        if (newFile.Exists)
        {
            //創(chuàng)建一個新的excel文件

            newFile.Delete();

            newFile = new FileInfo(path);
        }
        
        //通過ExcelPackage打開文件
        using (ExcelPackage package = new ExcelPackage(newFile))
        {
            //在excel空文件添加新sheet

            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("message");
            //添加列名

            worksheet.Cells[1, 1].Value = "姓名";

            worksheet.Cells[1, 2].Value = "職務(wù)";

            worksheet.Cells[1, 3].Value = "黨齡";

            worksheet.Cells[1, 4].Value = "圖片名";
            
            for (int i = 0; i < newList.Count; i++)
            {
                string[] messages = newList[i].Split('|'); //趙一|黨員|1年|趙一.png| 
                string itemName = messages[0];
                string itemWork = messages[1];
                string itemYear = messages[2];
                string imageName = messages[3];
                //添加一行數(shù)據(jù)

                int num = i + 2;

                worksheet.Cells["A"+ num].Value = itemName;

                worksheet.Cells["B" + num].Value = itemWork;

                worksheet.Cells["C" + num].Value = itemYear;

                worksheet.Cells["D" + num].Value = imageName;
            }
            
            //保存excel
            package.Save();
            print("重寫完成");
        }
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末礼旅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子洽洁,更是在濱河造成了極大的恐慌各淀,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诡挂,死亡現(xiàn)場離奇詭異碎浇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)璃俗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門奴璃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人城豁,你說我怎么就攤上這事苟穆。” “怎么了唱星?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵雳旅,是天一觀的道長。 經(jīng)常有香客問我间聊,道長攒盈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任哎榴,我火速辦了婚禮型豁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尚蝌。我一直安慰自己迎变,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布飘言。 她就那樣靜靜地躺著衣形,像睡著了一般。 火紅的嫁衣襯著肌膚如雪姿鸿。 梳的紋絲不亂的頭發(fā)上谆吴,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機(jī)與錄音般妙,去河邊找鬼纪铺。 笑死,一個胖子當(dāng)著我的面吹牛碟渺,可吹牛的內(nèi)容都是我干的鲜锚。 我是一名探鬼主播突诬,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼芜繁!你這毒婦竟也來了旺隙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤骏令,失蹤者是張志新(化名)和其女友劉穎蔬捷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榔袋,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡周拐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凰兑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妥粟。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吏够,靈堂內(nèi)的尸體忽然破棺而出勾给,到底是詐尸還是另有隱情,我是刑警寧澤锅知,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布播急,位于F島的核電站,受9級特大地震影響售睹,放射性物質(zhì)發(fā)生泄漏桩警。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一侣姆、第九天 我趴在偏房一處隱蔽的房頂上張望生真。 院中可真熱鬧沉噩,春花似錦捺宗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至畜眨,卻和暖如春昼牛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背康聂。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工贰健, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恬汁。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓伶椿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脊另,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 前言:學(xué)習(xí)數(shù)據(jù)開始~ 1.PlayerPrefs類(是數(shù)據(jù)持久化的類导狡,像游戲中的存檔啊什么的) (1)是個靜態(tài)類,...
    Joe_Game閱讀 801評論 0 1
  • 前段時間編譯了一下Unity的Mono,看了很多相關(guān)的文章偎痛,也遇到很多新坑旱捧。所以來總結(jié)一下,加深自己對Mono的理...
    李嘉的博客閱讀 3,124評論 0 3
  • 1踩麦、特殊文件夾(unity doc : Special Folders) Unity工程根目錄下枚赡,有三個特殊文件夾...
    小飛不會飛_閱讀 6,382評論 2 27
  • 照顧好自己很重要呀,今天咋們4位好姐妹們谓谦,上完讀書會标锄,集體看電影。給自己更好的休息娛樂時間茁计,積蓄好滿滿的能量料皇,回家...
    改變一點點OK閱讀 188評論 0 0
  • 生肖姓名學(xué)---辰龍篇 辰龍篇 龍的地支國‘辰’。龍在中國是一種象征性的動物星压,有祥瑞的意義践剂。人們將其視為吉祥與瑞獸...
    請吔閱讀 765評論 0 2