91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

WinForm 實(shí)現(xiàn)打開(kāi)并導(dǎo)入 Excel 文件讀取功能

admin
2025年2月8日 0:32 本文熱度 1105

一、引言

在 Windows 桌面應(yīng)用開(kāi)發(fā)中,WinForm 是一種常見(jiàn)且強(qiáng)大的技術(shù)。而在許多業(yè)務(wù)場(chǎng)景下,需要從 Excel 文件中讀取數(shù)據(jù),例如數(shù)據(jù)分析、數(shù)據(jù)導(dǎo)入等。本文將詳細(xì)介紹如何在 WinForm 應(yīng)用程序中實(shí)現(xiàn)打開(kāi)并導(dǎo)入 Excel 文件,以及讀取其中的數(shù)據(jù)。

二、實(shí)現(xiàn)思路

要在 WinForm 中實(shí)現(xiàn)打開(kāi)并讀取 Excel 文件,主要步驟如下:

  1. 提供文件選擇界面:使用 OpenFileDialog 控件讓用戶(hù)選擇要打開(kāi)的 Excel 文件。
  2. 選擇合適的庫(kù)讀取 Excel:這里我們使用 Microsoft.Office.Interop.Excel 或 EPPlus 庫(kù),Microsoft.Office.Interop.Excel 需要安裝 Microsoft Office,而 EPPlus 是一個(gè)開(kāi)源庫(kù),無(wú)需安裝 Office。本文將分別介紹這兩種方法。
  3. 讀取 Excel 文件內(nèi)容:將 Excel 文件中的數(shù)據(jù)讀取出來(lái),并在界面上顯示或進(jìn)行后續(xù)處理。

三、使用 Microsoft.Office.Interop.Excel 實(shí)現(xiàn)

1. 創(chuàng)建 WinForm 項(xiàng)目

打開(kāi) Visual Studio,創(chuàng)建一個(gè)新的 C# WinForm 應(yīng)用程序項(xiàng)目。

2. 添加引用

在項(xiàng)目中添加對(duì) Microsoft.Office.Interop.Excel 的引用。可以通過(guò)“項(xiàng)目” -> “添加引用” -> “COM”,找到“Microsoft Excel XX.0 Object Library”(XX 為 Office 版本號(hào))并添加。

3. 設(shè)計(jì)界面

在窗體上添加一個(gè) Button 控件用于觸發(fā)文件選擇對(duì)話框,添加一個(gè) DataGridView 控件用于顯示讀取的數(shù)據(jù)。

4. 編寫(xiě)代碼

using System;
using System.Data;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelImportWinForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Excel Files|*.xls;*.xlsx";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;
                DataTable dataTable = ReadExcelWithInterop(filePath);
                dataGridView1.DataSource = dataTable;
            }
        }

        private DataTable ReadExcelWithInterop(string filePath)
        {
            DataTable dataTable = new DataTable();
            Excel.Application excelApp = new Excel.Application();
            Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);
            Excel.Worksheet worksheet = workbook.Sheets[1];
            Excel.Range range = worksheet.UsedRange;

            // 添加列
            for (int col = 1; col <= range.Columns.Count; col++)
            {
                dataTable.Columns.Add(range.Cells[1, col].Value2.ToString());
            }

            // 添加行
            for (int row = 2; row <= range.Rows.Count; row++)
            {
                DataRow dataRow = dataTable.NewRow();
                for (int col = 1; col <= range.Columns.Count; col++)
                {
                    dataRow[col - 1] = range.Cells[row, col].Value2;
                }
                dataTable.Rows.Add(dataRow);
            }

            workbook.Close(false);
            excelApp.Quit();
            return dataTable;
        }
    }
}

5. 代碼解釋

  • 文件選擇:使用 OpenFileDialog 讓用戶(hù)選擇 Excel 文件。
  • 讀取 Excel:通過(guò) Microsoft.Office.Interop.Excel 打開(kāi) Excel 文件,獲取工作表和使用范圍。
  • 數(shù)據(jù)處理:將 Excel 中的數(shù)據(jù)逐行逐列讀取到 DataTable 中,最后將 DataTable 綁定到 DataGridView 上顯示。

四、使用 EPPlus 實(shí)現(xiàn)

1. 安裝 EPPlus 庫(kù)

通過(guò) NuGet 包管理器搜索 EPPlus 并安裝到項(xiàng)目中。

2. 編寫(xiě)代碼

using System;
using System.Data;
using System.IO;
using System.Windows.Forms;
using OfficeOpenXml;

namespace ExcelImportWinForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Excel Files|*.xls;*.xlsx";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;
                DataTable dataTable = ReadExcelWithEPPlus(filePath);
                dataGridView1.DataSource = dataTable;
            }
        }

        private DataTable ReadExcelWithEPPlus(string filePath)
        {
            DataTable dataTable = new DataTable();
            using (ExcelPackage package = new ExcelPackage(new FileInfo(filePath)))
            {
                ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
                if (worksheet.Dimension != null)
                {
                    // 添加列
                    for (int col = 1; col <= worksheet.Dimension.End.Column; col++)
                    {
                        dataTable.Columns.Add(worksheet.Cells[1, col].Value?.ToString());
                    }

                    // 添加行
                    for (int row = 2; row <= worksheet.Dimension.End.Row; row++)
                    {
                        DataRow dataRow = dataTable.NewRow();
                        for (int col = 1; col <= worksheet.Dimension.End.Column; col++)
                        {
                            dataRow[col - 1] = worksheet.Cells[row, col].Value;
                        }
                        dataTable.Rows.Add(dataRow);
                    }
                }
            }
            return dataTable;
        }
    }
}

3. 代碼解釋

  • 文件選擇:同樣使用 OpenFileDialog 讓用戶(hù)選擇 Excel 文件。
  • 讀取 Excel:使用 EPPlus 打開(kāi) Excel 文件,獲取工作表和單元格范圍。
  • 數(shù)據(jù)處理:將 Excel 中的數(shù)據(jù)逐行逐列讀取到 DataTable 中,最后將 DataTable 綁定到 DataGridView 上顯示。

五、兩種方法對(duì)比

  • **Microsoft.Office.Interop.Excel**:優(yōu)點(diǎn)是功能強(qiáng)大,能直接調(diào)用 Excel 的各種功能;缺點(diǎn)是需要安裝 Microsoft Office,部署環(huán)境受限,且性能相對(duì)較低。
  • **EPPlus**:優(yōu)點(diǎn)是開(kāi)源、無(wú)需安裝 Office,性能較好,部署方便;缺點(diǎn)是功能相對(duì) Microsoft.Office.Interop.Excel 可能不夠全面。

六、總結(jié)

通過(guò)以上兩種方法,我們可以在 WinForm 應(yīng)用程序中實(shí)現(xiàn)打開(kāi)并導(dǎo)入 Excel 文件,讀取其中的數(shù)據(jù)。開(kāi)發(fā)者可以根據(jù)實(shí)際需求和部署環(huán)境選擇合適的方法。無(wú)論是使用 Microsoft.Office.Interop.Excel 還是 EPPlus,都能滿足基本的 Excel 數(shù)據(jù)讀取需求,為后續(xù)的數(shù)據(jù)處理和分析提供基礎(chǔ)。


閱讀原文:原文鏈接


該文章在 2025/2/8 10:20:47 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 91精品福利 | 精品免费成人 | 精品影院| 91美女在线观看 | 九一色色 | 福利午夜一级a | 91看片婬黄大片 | 福利91 | 日韩在线一区天天看 | 国产乱了真实 | 91福利免费观看 | 91大神精品全国 | 欧美日韩国产中文 | 日韩在线观看不卡 | 国产国产 | 国产精品区二 | 97精品国产自产 | 国产精品000 | 九九精品99久 | 91免费入口 | 91视频国产网站 | 国产好吊日 | 91精品视频免费看 | 国产尤物尤物在线看 | 日韩综合成人夜猫 | 日韩电影中文字幕 | 精品国产综合区 | 91网页版 | 日本成人一区二区 | 国产精品乱 | 青草在线视频在 | 欧美在线观看综合 | 尤物视频在线网站 | 日本免费一级二级三 | 精品一区二区免费 | 日韩午夜影片 | 欧美最猛黑 | 午夜福利92 | 国产性爱一级 | 国产老肥熟| 日本亚洲中文 |