提示:运行之前必须先引用Interop.Excel.dll模块
usando Sistema;
usando System.Collections.Generic;
usando System.Text;
usando System.Data;
usando System.Data.OleDb;
usando System.Windows.Forms;
usando System.Reflection;
usando Excel;
espacio de nombres AnalysisSystem.DB
{
Operación Excel de clase pública
{
cadena privada _fileName;//保存路径名
Operación pública de Excel (nombre de archivo de cadena)
{
_fileName = nombre de archivo;
}
OleDbConnection privado GetConnection()
{
string connectString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0",_fileName);
OleDbConnection myConn = new OleDbConnection(connectString);//建立链接
devolver miConn;
}
público System.Data.DataTable ExecuteTableResult (cadena strSql)
{
System.Data.DataTable dt = nuevo System.Data.DataTable();
intentar
{
Conexión OleDbConnection = this.GetConnection();
OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);//执行相关SQL语句
da.Relleno(dt);
}
captura (System.Exception ex)
{
//no hacer nada
}
devolver dt;
}
conjunto de datos público ExecuteSetResult (cadena strSql, cadena nombre_tabla)
{
Conjunto de datos ds = nuevo Conjunto de datos();
cadena nombre_temp = "[" + nombre_tabla + "$]";
intentar
{
Conexión OleDbConnection = this.GetConnection();
OleDbDataAdapter da = nuevo OleDbDataAdapter(strSql, conn);
da.Fill(ds,temp_name);
}
captura (System.Exception ex)
{
//no hacer nada
}
devolver ds;
}
cadena pública ExecuteOneResult (cadena strSql)
{
resultado de cadena = "";
System.Data.DataTable dt = nuevo System.Data.DataTable();
intentar
{
Conexión OleDbConnection = this.GetConnection();
OleDbDataAdapter da = nuevo OleDbDataAdapter(strSql, conn);
da.Relleno(dt);
}
captura (System.Exception ex)
{
//no hacer nada
}
si (dt! = nulo && dt.Rows.Count > 0)
{
resultado = dt.Rows[0][0].ToString();
}
resultado de devolución;
}
vacío público ExecuteNonResult (cadena strSql)
{
intentar
{
Conexión OleDbConnection = this.GetConnection();
OleDbCommand cmd = nuevo OleDbCommand(strSql, conn);
cmd.ExecuteNonQuery();
}
captura (System.Exception ex)
{
//no hacer nada
}
}
_Workbook privado W_B (aplicación Excel.Application)
{
Libros de trabajo libros de trabajo = aplicación.Libros de trabajo;
_Libro de trabajo libro = libros de trabajo.Add(XlWBATemplate.xlWBATWorksheet);
libro de trabajo de devolución;
}
privado _Hoja de trabajo W_S(_Libro de trabajo libro_de_trabajo)
{
Hojas de hojas = libro_trabajo.Hojas de trabajo;
_Worksheet hoja de trabajo = (_Worksheet)sheets.get_Item(1);//获取选择第一个表,本身默认名称为Sheet1
hoja de trabajo de devolución;
}
//从DataGridView中导出数据到Excel表,单表导出
vacío público Excel_out (DataGridView dataGridView1)
{
//建立Excel对象
Aplicación Excel.Application = nueva Excel.Application();
intentar
{
_Libro de trabajo libro = this.W_B(app);
_Hoja de trabajo hoja de trabajo = this.W_S(libro de trabajo);
cadena sLen = "";
//取得最后一列列名
char H = (char)(64 + dataGridView1.ColumnCount / 26);
char L = (char)(64 + dataGridView1.ColumnCount % 26);
si (dataGridView1.ColumnCount <26)
{
sLen = L.ToString();
}
demás
{
sLen = H.ToString() + L.ToString();
}
//标题
cadena sTmp = sLen + "1";
Rango ranCaption = worksheet.get_Range(sTmp, "A1");
cadena[] asCaption = nueva cadena[dataGridView1.ColumnCount];
para (int i = 0; i < dataGridView1.ColumnCount; i++)
{
asCaption[i] = dataGridView1.Columns[i].HeaderText;
}
ranCaption.Value2 = asCaption;
//数据
objeto[] obj = nuevo objeto[dataGridView1.Columns.Count];
para (int r = 0; r < dataGridView1.RowCount - 1; r++)
{
para (int l = 0; l < dataGridView1.Columns.Count; l++)
{
if (dataGridView1[l, r].ValueType == tipode(FechaHora))
{
obj[l] = dataGridView1[l, r].Value.ToString();
}
demás
{
obj[l] = dataGridView1[l, r].Valor;
}
}
cadena celda1 = sLen + ((int)(r + 2)).ToString();
cadena celda2 = "A" + ((int)(r + 2)).ToString();
Rango ejecutado = hoja de trabajo.get_Range(celda1, celda2);
corrió.Value2 = obj;
}
//保存
libro de trabajo.SaveCopyAs(this._fileName);
libro de trabajo.Guardado = verdadero;
}
finalmente
{
//关闭
aplicación.UserControl = falso;
aplicación.Salir();
}
}
/// <resumen>
/// 多表导出
/// </summary>
/// <param name="dataGridView">DataGridView列表集合</param>
/// <param name="TableList">表名称集合</param>
public void Excel_out_MulTable(List<DataGridView> dataGridView, string[] TableList)
{
//建立Excel对象
Aplicación Excel.Application = nueva Excel.Application();
intentar
{
Libros de trabajo libros de trabajo = app.Workbooks;//定义一个工作簿集合
_Workbook libro de trabajo = libros de trabajo.Add(XlWBATemplate.xlWBATWorksheet);//向工作簿添加一个新工作簿
Hojas de hojas = libro de trabajo.Hojas de trabajo;//定义一个工作表集合
_Hoja de trabajo hoja de trabajo;
int wnúmero = 0;
mientras (wnumber++ < (TableList.GetLength(0) - 1))
{
hojas.Agregar(Valor.faltante, Valor.faltante, Valor.faltante, Valor.faltante, Valor.faltante);//向一个工作表集合添加一个新工作表
}
/*提醒:Falta类为命名空间System.Reflection中的类,所以记得引入*/
wnúmero = 0;
foreach (DataGridView dataGridView1 en dataGridView)
{
hoja de trabajo = nulo;
hoja de trabajo = (_Worksheet)sheets.get_Item(wnumber + 1);//取出需要进行操作的工作表
hoja de trabajo.Nombre = ListaTabla[wnumber];//设置改工作表名称
si (wnúmero! = 0)
hojas.Select(wnumber);//选中操作表
cadena sLen = "";
//取得最后一列列名
char H = (char)(64 + dataGridView1.ColumnCount / 26);
char L = (char)(64 + dataGridView1.ColumnCount % 26);
si (dataGridView1.ColumnCount <26)
{
sLen = L.ToString();
}
demás
{
sLen = H.ToString() + L.ToString();
}
//标题
cadena sTmp = sLen + "1";
Rango ranCaption = worksheet.get_Range(sTmp, "A1");
cadena[] asCaption = nueva cadena[dataGridView1.ColumnCount];
para (int i = 0; i < dataGridView1.ColumnCount; i++)
{
asCaption[i] = dataGridView1.Columns[i].HeaderText;
}
ranCaption.Value2 = asCaption;
//数据
objeto[] obj = nuevo objeto[dataGridView1.Columns.Count];
para (int r = 0; r < dataGridView1.RowCount - 1; r++)
{
para (int l = 0; l < dataGridView1.Columns.Count; l++)
{
if (dataGridView1[l, r].ValueType == tipode(FechaHora))
{
obj[l] = dataGridView1[l, r].Value.ToString();
}
demás
{
obj[l] = dataGridView1[l, r].Valor;
}
}
cadena celda1 = sLen + ((int)(r + 2)).ToString();
cadena celda2 = "A" + ((int)(r + 2)).ToString();
Rango ejecutado = hoja de trabajo.get_Range(celda1, celda2);//设置单元格
corrió.Value2 = obj;
}
wnúmero++;
}
//保存
libro de trabajo.SaveCopyAs(this._fileName);
libro de trabajo.Guardado = verdadero;
}
finalmente
{
//关闭
aplicación.UserControl = falso;
aplicación.Salir();
}
}
}
}