如何使用C#

时间:2018-03-02 22:50:51

标签: c# excel

我知道我们可以使用以下方式阅读excel .xls文件

  • OleDB:但我们不允许在服务器上安装OleDB驱动程序。
  • Interop:但我们不允许在服务器上安装MS Office。
  • ExcelDataReader:不允许使用第三方软件包或DLL。

我们可以使用FileStream来读取平面文件,是否有任何方法可以使用.xls中的内置类库来阅读.NET Framework文件?

3 个答案:

答案 0 :(得分:0)

从c#中读取xls的最公平的方法是使用Excel的Microsoft主互操作程序集(PIA)(来自您的选项的" Interop")。但是,它需要在运行此代码的计算机上安装Microsoft Excel,这是一个很大的缺点。这些库是Excel应用程序之上的某种包装器,但它应该允许您读取Excel对象模型中可用的所有内容。

根据我的经验,这种方式或多或少对桌面应用程序有利,但它对服务器端Excel文件处理不利。

答案 1 :(得分:0)

这是一个让你前进的简单例子。

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel; 

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

        private void button1_Click(object sender, EventArgs e)
        {
            Excel.Application xlApp ;
            Excel.Workbook xlWorkBook ;
            Excel.Worksheet xlWorkSheet ;
            Excel.Range range ;

            string str;
            int rCnt ;
            int cCnt ;
            int rw = 0;
            int cl = 0;

            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open(@"d:\csharp-Excel.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

            range = xlWorkSheet.UsedRange;
            rw = range.Rows.Count;
            cl = range.Columns.Count;


            for (rCnt = 1; rCnt  < = rw; rCnt++)
            {
                for (cCnt = 1; cCnt  < = cl; cCnt++)
                {
                    str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;
                    MessageBox.Show(str);
                }
            }

            xlWorkBook.Close(true, null, null);
            xlApp.Quit();

            Marshal.ReleaseComObject(xlWorkSheet);
            Marshal.ReleaseComObject(xlWorkBook);
            Marshal.ReleaseComObject(xlApp);

        }

    }
}

http://csharp.net-informations.com/excel/csharp-read-excel.htm

请记住添加对Microsoft Excel 15.0对象库的引用

答案 2 :(得分:-1)

如果您可以将Microsoft Open XML 2 SDK添加到您的应用程序,您可以阅读现代Open XML文件格式,然后解析XML数据的XML文件。

如果您无法使用Microsoft的解决方案,则必须使用Open XML文件格式作为指南编写自己的解决方案。