找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
請尊重及感激所有版主付出和奉獻儲值後自動升級用戶組認識好友、聊天,分享生活趣事
火影忍者催眠火影中文無碼 meg高中流出
dandy 91my stupiall cost機動戰士vr風流the・ト

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]為美好的世界獻上

桃園龜山 女騎士煞不

衝進中橫水溝 紅牌重

快艇正妹豪乳吸睛

(4月新番)[繁]為美好

✡ 斗破蒼穹 年番/鬥
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 4121|回復: 6
打印上一主題下一主題

[求助]求救:版上有無C#高手,誰會用C#讀EXCEL資料??[複製鏈接]

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
32
積分
61 點
潛水值
58870 米
跳轉到指定樓層
樓主
發表於 2016-3-24 01:31 PM|只看該作者|倒序瀏覽
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
要整理零件規格表
要寫一個程式
可以讀取EXCEL檔
類似這樣:

[size=15.0781px]然後就是當我輸入"A"時,要自動跑出:
身高:170
體重:65
年齡:20

輸入"B"時.....以此類推

偏偏我對C#一竅不通(只會+-*/)
有人會嗎??
或者哪裡有教學??
...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
分享分享0收藏收藏0支持支持0
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

superhbin 該用戶已被刪除
頭香
發表於 2016-3-24 03:49 PM|只看該作者
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

Discuz!

本帖最後由 superhbin 於 2016-3-24 04:30 PM 編輯

搜尋 NPOI , 用這個操作excel 很方便
以下範例供您參考

using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

static void Main(string[] args)
{
    try
    {
        IWorkbook oWB = WorkbookFactory.Create(new FileStream("d:\\test.xlsx", FileMode.Open,FileAccess.Read));
...
瀏覽完整內容,請先 註冊登入會員
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。

使用道具檢舉

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
32
積分
61 點
潛水值
58870 米
3
發表於 2016-3-25 12:17 AM|只看該作者
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
superhbin 發表於 2016-3-24 03:49 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

搜尋 NPOI , 用這個操作excel 很方便
以下範例供您參考

請問下載後怎麼用??
解壓縮後是一堆DLL檔案
怎麼放給visual studio參考??...
瀏覽完整內容,請先 註冊登入會員

點評

foxcloud820726 就不太會用,突然要我做這個  發表於 2016-3-25 01:11 PM
sheauren 於專案reference新增加進去,我比較好奇是從來不需要用third-party的library嗎....  發表於 2016-3-25 11:03 AM

使用道具檢舉

Rank: 2Rank: 2

帖子
541
積分
212 點
潛水值
13707 米
4
發表於 2016-3-27 09:24 PM|只看該作者
本帖最後由 rr09192084 於 2016-3-27 09:38 PM 編輯

也可以用EPPlus這個Nuget套件,請到"工具"->"Nuget套件管理員"->"管理方案的Nuget套件",到線上去搜尋"EPPlus",記得大小寫要注意,找到"標記"是"excel OOXML"這個然後安裝它。
這整個程式要正常執行,首先要加入這四個參考:
  1. using System.IO;
  2. using System.Reflection;
  3. using OfficeOpenXml;
  4. using OfficeOpenXml.Style;
複製代碼
完整的程式碼如下
  1.         //定義資料
  2.         class ClassData : IEquatable<ClassData>
  3.         {
  4.             public string 姓名 { get; set; }
  5.             public string 身高 { get; set; }
  6.             public string 體重 { get; set; }
  7.             public string 年齡 { get; set; }
  8.             public bool Equals(ClassData other)
  9.             {
  10.                 return this.姓名.Equals(other.姓名);
  11.             }
  12.         }

  13.         //新增存放資料的LIST欄位來備用
  14.         private List<ClassData> classData = new List<ClassData>();

  15.         //載入程式時就將EXCEL檔案讀取進來,並將它放入準備好的LIST中
  16.         private void Form1_Load(object sender, EventArgs e)
  17.         {
  18.             string xlsxpath = @"D:TMPClass_0715.xlsx";
  19.             using (FileStream fs = new FileStream(xlsxpath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
  20.             {
  21.                 using (ExcelPackage package = new ExcelPackage(fs))
  22.                 {
  23.                     //難怪有人說C#程式只要一直點下去就對了。
  24.                     classData = package.ToDataTable().ToList<ClassData>();
  25.                 }
  26.             }
  27.         }

  28.         //在textBox1中輸入姓名,按下button1查詢的程式碼
  29.         private void button1_Click(object sender, EventArgs e)
  30.         {
  31.             textBox2.Clear();
  32.             textBox3.Clear();
  33.             textBox4.Clear();
  34.             if (textBox1.Text.Length > 0)
  35.             {
  36.                 foreach (var p in classData)
  37.                 {
  38.                     if (p.姓名.Equals(textBox1.Text))
  39.                     {
  40.                         textBox2.Text = p.身高;
  41.                         textBox3.Text = p.體重;
  42.                         textBox4.Text = p.年齡;
  43.                     }
  44.                 }
  45.             }
  46.         }


  47.     //擴充方法要放在靜態類別中
  48.     public static class ExtensionUtility
  49.     {
  50.         //擴充方法:將EXCEL檔案中的第sheetindex個Worksheet讀到DataTable中
  51.         public static DataTable ToDataTable(this ExcelPackage package, int sheetindex = 1)
  52.         {
  53.             ExcelWorksheet workSheet = package.Workbook.Worksheets[sheetindex];
  54.             DataTable table = new DataTable();
  55.             foreach (var firstRowCell in workSheet.Cells[1, 1, 1, workSheet.Dimension.End.Column])
  56.             {
  57.                 table.Columns.Add(firstRowCell.Text);
  58.             }

  59.             for (var rowNumber = 2; rowNumber <= workSheet.Dimension.End.Row; rowNumber++)
  60.             {
  61.                 var row = workSheet.Cells[rowNumber, 1, rowNumber, workSheet.Dimension.End.Column];
  62.                 var newRow = table.NewRow();
  63.                 foreach (var cell in row)
  64.                 {
  65.                     newRow[cell.Start.Column - 1] = cell.Text;
  66.                 }
  67.                 table.Rows.Add(newRow);
  68.             }
  69.             return table;
  70.         }

  71.         //擴充方法:將DataTable轉換成指定結構型態的LIST
  72.         public static List<TSource> ToList<TSource>(this DataTable dataTable) where TSource : new()
  73.         {
  74.             var dataList = new List<TSource>();

  75.             const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic;
  76.             var objFieldNames = (from PropertyInfo aProp in typeof(TSource).GetProperties(flags)
  77.                                  select new { Name = aProp.Name, Type = Nullable.GetUnderlyingType(aProp.PropertyType) ?? aProp.PropertyType }).ToList();
  78.             var dataTblFieldNames = (from DataColumn aHeader in dataTable.Columns
  79.                                      select new { Name = aHeader.ColumnName, Type = aHeader.DataType }).ToList();
  80.             var commonFields = objFieldNames.Intersect(dataTblFieldNames).ToList();

  81.             foreach (DataRow dataRow in dataTable.AsEnumerable().ToList())
  82.             {
  83.                 var aTSource = new TSource();
  84.                 foreach (var aField in commonFields)
  85.                 {
  86.                     PropertyInfo propertyInfos = aTSource.GetType().GetProperty(aField.Name);
  87.                     propertyInfos.SetValue(aTSource, dataRow[aField.Name], null);
  88.                 }
  89.                 dataList.Add(aTSource);
  90.             }
  91.             return dataList;
  92.         }
  93.     }
複製代碼

補充內容 (2016-3-27 09:51 PM):
ExtensionUtility這個類別要放在namespace這一區內,不可以放在Form裡。...
瀏覽完整內容,請先 註冊登入會員
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
32
積分
61 點
潛水值
58870 米
5
發表於 2016-3-28 10:44 AM|只看該作者
rr09192084 發表於 2016-3-27 09:24 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

也可以用EPPlus這個Nuget套件,請到"工具"->"Nuget套件管理員"->"管理方案的Nuget套件",到線上去搜尋"EPPl ...
...
瀏覽完整內容,請先 註冊登入會員





附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊

點評

rr09192084 你應該把程式碼寫在Form1.cs裡吧!!  發表於 2016-3-28 02:56 PM

使用道具檢舉

Rank: 1

帖子
226
積分
188 點
潛水值
12730 米
6
發表於 2016-4-13 02:05 AM|只看該作者
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
你這樣的資料格式也可以考慮使用OleDb去讀取資料
不過如果不會寫SQL的話,可能難度反而會比較高
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

Rank: 1

帖子
310
積分
178 點
潛水值
13319 米
7
發表於 2016-6-20 10:59 PM|只看該作者
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
用ClosedXML吧。
這個很簡單,官網有sample code
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部