Application方式读写
添加COM程序集引用:Microsoft Excel 14.0 Object Library
添加using:Microsoft.Office.Interop.Excel
一、读取DataTable数据:
// 定义数据存储表
DataTable dataTable = new DataTable();
// Excel文件路径
string file = "C:/data.xls";
// 打开Excel应用程序
Application app = new Application();
// 设置Excel应用程序不可见
app.Visible = false;
// 读取Excel工作簿
Workbooks books = app.Workbooks;
_Workbook book = books.Add(file);
// 读取Excel工作表
Sheets sheets = book.Worksheets;
_Worksheet sheet = sheets.get_Item(1) as _Worksheet;
// 读取列名
for (int i = 0, length = sheet.Columns.Count; i < length; i++)
{
dataTable.Columns.Add(sheet.Cells[1, i + 1].ToString());
}
// 读取行数据
for (int i = 0, iLength = sheet.Rows.Count; i < iLength; i++)
{
object[] obj = new object[sheet.Columns.Count];
for (int j = 0, jLength = sheet.Columns.Count; j < jLength; j++)
{
obj[j] = sheet.Cells[i + 2, j + 1];
}
dataTable.Rows.Add(obj);
}
// 不保存原始数据状态下关闭Excel应用程序
app.UserControl = false;
app.Quit();
return dataTable;
二、写入DataTable数据:
// 要写入的数据表
DataTable dataTable = new DataTable();
// Excel文件保存路径
string file = "C:/data.xls";
// 打开Excel应用程序
Application app = new Application();
// 设置Excel应用程序不可见
app.Visible = false;
// 读取Excel工作簿
Workbooks books = app.Workbooks;
_Workbook book = books.Add(XlWBATemplate.xlWBATWorksheet);
// 读取Excel工作表
Sheets sheets = book.Worksheets;
_Worksheet sheet = sheets.get_Item(1) as _Worksheet;
// 写入列名
for (int i = 0, length = dataTable.Columns.Count; i < length; i++)
{
sheet.Cells[1, i + 1] = dataTable.Columns[i].ColumnName;
}
// 写入行数据
for (int i = 0, iLength = dataTable.Rows.Count; i < iLength; i++)
{
for (int j = 0, jLength = dataTable.Columns.Count; j < jLength; j++)
{
sheet.Cells[i + 2, j + 1] = dataTable.Rows[i][j].ToString();
}
}
// 保存Excel工作簿
book.SaveCopyAs(file);
book.Saved = true;
// 关闭Excel应用程序
app.UserControl = false;
app.Quit();
ADO.NET方式读写
一、获取Sheet名:
// 定义Sheet数据表名存储数组
string[] sheets = new string[] { };
// Excel文件路径
string file = "C:/data.xls";
// OleDb链接字符串
string connection = "Provider=Microsoft.Jet.OLEDB.4.0;";
connection += "Data Source=" + file + ";";
connection += "Extended Properties=Excel 8.0;";
// 打开OleDb链接
using (OleDbConnection con = new OleDbConnection(connection))
{
con.Open();
// 读取数据架构信息
DataTable dataTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
// 读取Sheet数据表名
sheets = new string[dataTable.Rows.Count];
for (int i = 0, length = dataTable.Rows.Count; i < length; i++)
{
sheets[i] = dataTable.Rows[i]["TABLE_NAME"].ToString();
}
// 关闭OleDb链接
con.Close();
}
return sheets;
二、读取DataTable数据:
// 定义数据存储表
DataTable dataTable = new DataTable();
// Excel文件路径
string file = "C:/data.xls";
// OleDb链接字符串
string connection = "Provider=Microsoft.Jet.OLEDB.4.0;";
connection += "Data Source=" + file + ";";
connection += "Extended Properties=Excel 8.0;";
// 打开OleDb链接
using (OleDbConnection con = new OleDbConnection(connection))
{
con.Open();
// 查询对应Sheet数据表的数据
string sql = "select * from [sheet$]";
// 读取表数据
using (OleDbDataAdapter adapter = new OleDbDataAdapter(sql, con))
{
adapter.Fill(dataTable);
}
// 关闭OleDb链接
con.Close();
}
return dataTable;