我知道我们可以通过以下方式读取excel.xls
文件:
- OleDB:但是我们不能在服务器上安装OleDB驱动程序。
- Interop:但是我们不能在服务器上安装MS Office。
- ExcelDataReader:不允许使用第三方软件包或DLL。
我们可以使用FileStream
来读取平面文件,难道没有使用.NET Framework
内置类库读取.xls
文件的方法吗?
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对象库的引用。
如果您可以将Microsoft Open XML 2 SDK添加到您的应用程序中,您就可以读取现代Open XML文件格式,然后解析Excel数据的XML文件。
如果您无法使用Microsoft的解决方案,您将不得不编写自己的代码,使用Open XML文件格式作为指南。
.xlsx
兼容吗?这样你就可以使用System.Io.Package
命名空间了。 - Rubens Farias