在未安装Excel的Excel文件中搜索代码

时间:2019-06-18 15:51:10

标签: c# excel

我制作了一个应用程序C#,用于搜索用户在excel文件中输入的代码,然后显示与该代码相对应的一些说明。

excel的文件有2列。一种是代码,一种是描述。例如

code  description
1     hello
2     this is
3     a test

因此,如果用户输入3。它将返回“测试”

我正在使用Microsoft.Office.Interop.Excel;

但是,引起我注意的是,这仅在计算机上安装了Excel的情况下才有效。我需要的东西不需要您在计算机上安装excel。

我当前程序的代码。

using Excel = Microsoft.Office.Interop.Excel;

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

        private void button1_Click(object sender, EventArgs e)
        {
            label3.Text = "Searching For Code!";
            label3.Visible = true;
            Excel.Application xlApp = new Excel.Application();
            string path = textBox3.Text;
            Excel.Workbook workBook = xlApp.Workbooks.Open(path);
            Excel.Worksheet workSheet = workBook.Worksheets["Sheet1"];
            Excel.Range range = workSheet.Columns[1];//Range of Column A
            Excel.Range findRange;
            string strToFind = textBox1.Text;
            string description;
            findRange = range.Find(strToFind);
            if (findRange is null)
            {
                label3.Text = "Code " + textBox1.Text + " Does not Exist!";               
            }
            else
            {
                description = workSheet.Cells[findRange.Row, 2].VALUE;
                textBox2.Text = description;                             
            }
        }
    }
}

此代码可以按预期工作,但是正如我所说,如果我没有安装excel,那么这将不起作用。我发现了一些不需要安装excel的其他库,但是我不确定如何使用它们来完成同样的事情。如果有人可以提供一个适用于任何库的示例。

谢谢。

1 个答案:

答案 0 :(得分:0)

C#中有许多excel库,其中最常用,快速且容易的是EPPLUS。

以下是读取文件的示例(来源:https://github.com/JanKallman/EPPlus/wiki/Getting-Started

//Open the workbook (or create it if it doesn't exist)
    var fi=new FileInfo(@"c:\workbooks\myworkbook.xlsx")
    using (var p = new ExcelPackage(fi))
        {
           //Get the Worksheet created in the previous codesample. 
           var ws=p.Workbook.Worksheets["MySheet"];
           Set the cell value using row and column.
           ws.Cells[2, 1].Value = "This is cell A2. It is set to bolds";
           //The style object is used to access most cells formatting and styles.
           ws.Cells[2, 1].Style.Font.Bold=true;
           //Save and close the package.
           p.Save();
       }