Excel学习笔记
OLEDB(Object Linking and Embedding,Database,又称为OLE DB或OLE-DB),一个基于COM的数据存储对象,能提供对所有类型的数据的操作,甚至能在离线的情况下存取数据(比方说,你使用的是你的便携机,你可以毫不费力地看到最后一次数据同步时的数据映像).
优点:读取Excel速度相对调用COM组件来讲是非常的快,不需要安装Office Excel就可以使用。
缺点:对于Excel本身一些复杂的逻辑,如单元格合并,单元格着色等无法支持。
优势:可以非常灵活的读取Excel中的数据,而且使用方式很丰富,基本上凡是打开Office Excel软件能够用鼠标点击完成的事,使用VSTO调用COM组件都能完成,而且可以调用Excel自身带的宏方法等。
缺点:机器上必须安装Excel,最重要的一点因为是基于单元格方式读取的,所以数据很慢。
OLEDB标准中定义的新概念----OLEDB将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。这种组件模型中的各个部分被冠以不同的名称。例如:数据提供者(Data Provider)是指提供数据存储的软件组件,小到普通的文本文件、大到主机上的复杂数据库,或者电子邮件存储,都是数据提供者的例子。有的文档把这些软件组件的开发商也称为数据提供者。
##1、OLEDB连接
读取Excel代码如下(示例):
public static DataSet ExcelToDataSet(string path, string tableName = "table1")
{
DataSet ds = new DataSet();
int lastIndex = path.LastIndexOf(".");
string txtType = path.Substring(lastIndex, path.Length - lastIndex );
string strConn;
if (txtType == ".xls")
{
strConn = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={path};Extended Properties=Excel 8.0 HDR=Yes;");
}
else
{
strConn= $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={path};Extended Properties=Excel 12.0 HDR=No;";
}
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = string.Format($"select * from [Sheet1$]");//自动获取第一个sheet1页名称必须添加$
OleDbDataAdapter myAdapeter = new OleDbDataAdapter(strExcel, strConn);
try
{
myAdapeter.Fill(ds, tableName);
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
conn.Close();
}
return ds;
}
创建并Excel代码如下(示例):
public static object DataSetToExcel(string path, string tableName = "table1")
{
string strConn;
int lastIndex = path.LastIndexOf(".");
string txtType = path.Substring(lastIndex, path.Length - lastIndex);
if (txtType == ".xls")
{
strConn = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={path};Extended Properties='Excel 8.0;'";
}
else
{
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0 xml'";
}
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
using (OleDbCommand mcmd = conn.CreateCommand())
{
string mCeateTable = $"Create table {tableName} ([ID] varchar,[name] varchar ,[age] varchar)";
mcmd.CommandText = mCeateTable;
mcmd.ExecuteNonQuery();
string code = $"insert into [{tableName}$] (ID,name,age)values('1','yantai','12')";
mcmd.CommandText = code;
mcmd.ExecuteNonQuery();
conn.Close();
}
return true;
}
链接: https://download.csdn.net/download/wanxiweilai/14045919.
public static void CreateExcel(string path )
{
app.SheetsInNewWorkbook = 3;
Workbook book = app.Workbooks.Add();
Worksheet sheet = book.Worksheets[1];
sheet.Name = "hello";
sheet.Cells[1, 2]="123";
Range r = sheet.get_Range("a1", "b2");
r.Merge(Missing.Value);
r.Font.Bold = true;
r.HorizontalAlignment =XlHAlign.xlHAlignCenter;
r.VerticalAlignment = XlHAlign.xlHAlignCenter;
Worksheet sheet1 = book.Worksheets[2];
sheet1.Name = "world";
sheet1.Cells[1, 2] = "123";
sheet1.Rows[1].Font.UnderLine= true;
book.SaveAs(path);
book.Close();
app.Quit();
}
链接: https://download.csdn.net/download/wanxiweilai/14045919.