第一种:导出gridVIEW中的数据,用hansTABLE做离线表,将数据库中指定表中的所有数据按GRIDVIEW中绑定的ID导出
只能导出数据不能去操作相应的EXCEl表格,不能对EXCEL中的数据进行格式化操作,如:字体颜色,大小,单元格合并等
/// <summary>
/// 导出
///
</summary>
/// <param
name="sender"></param>
/// <param
name="e"></param>
protected void
ImageButton2_Click(object sender, ImageClickEventArgs e)
{
string IDList =
"‘0‘";
for (int i = 0; i <
GVData.Rows.Count; i++)
{
Label
LabVis =
(Label)GVData.Rows[i].FindControl("LabVisible");
IDList = IDList + ",‘" + LabVis.Text.ToString() +
"‘";
}
Hashtable MyTable = new
Hashtable();
MyTable.Add("TrueName", "姓名");
MyTable.Add("DateType",
"请假类别及事由");
MyTable.Add("DateFR",
"开始时间");
MyTable.Add("DateTo",
"结束时间");
MyTable.Add("BuMenName",
"组别");
MyTable.Add("Days",
"休假天数");
MyTable.Add("SDays",
"实修天数");
MyTable.Add("Note",
"备注");
string sql = "select
TrueName "+"姓名"+",DateType "+"请假类别及事由"+",DateFR "+"开始时间"+",DateTO
"+"结束时间"+",Note "+"备注"+",BuMenName "+"所属部门"+",Days "+"休假天数"+",SDays "+"实修天数"+"
from T_ProjectLeave,Erpuser,erpbumen where T_ProjectLeave.userid= Erpuser.id and
T_projectLeave.bumenID=erpbumen.ID and T_projectLeave.ID in (" + IDList + ")
order by userID desc";
ZWL.Common.DataToExcel.GridViewToExcel(ZWL.DBUtility.DbHelperSQL.GetDataSet(sql),
MyTable, "Excel报表");
}
GRIDVIEWToExcel方法:
#region 将DataTable的数据导出显示为报表(不使用Excel对象,使用COM.Excel)这里必须要引入Com.EXCEl.dll文件
#region
使用示例
public static void
GridViewToExcel(DataSet MyData, Hashtable nameList,string
ReportTitle)
{
string
FilePath = System.Web.HttpContext.Current.Server.MapPath("../") +
"ReportFile\\";
//利用excel对象
DataToExcel dte = new
DataToExcel();
string filename =
"";
try
{
if (MyData.Tables[0].Rows.Count >
0)
{
filename = dte.DataExcel(MyData.Tables[0], ReportTitle, FilePath,
nameList);
}
}
catch
{}
if
(filename !=
"")
{
System.Web.HttpContext.Current.Response.Redirect("../ReportFile/" + filename,
true);
}
}
#endregion
///
<summary>
///
将DataTable的数据导出显示为报表(不使用Excel对象)
/// </summary>
/// <param
name="dt">数据DataTable</param>
/// <param
name="strTitle">标题</param>
/// <param
name="FilePath">生成文件的路径</param>
/// <param
name="nameList"></param>
///
<returns></returns>
public string DataExcel(System.Data.DataTable dt, string strTitle, string
FilePath, Hashtable nameList)
{
COM.Excel.cExcelFile excel = new
COM.Excel.cExcelFile();
ClearFile(FilePath);
string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") +
".xls";
excel.CreateFile(FilePath +
filename);
excel.PrintGridLines = false;
COM.Excel.cExcelFile.MarginTypes mt1 =
COM.Excel.cExcelFile.MarginTypes.xlsTopMargin;
COM.Excel.cExcelFile.MarginTypes mt2 =
COM.Excel.cExcelFile.MarginTypes.xlsLeftMargin;
COM.Excel.cExcelFile.MarginTypes mt3 =
COM.Excel.cExcelFile.MarginTypes.xlsRightMargin;
COM.Excel.cExcelFile.MarginTypes mt4 =
COM.Excel.cExcelFile.MarginTypes.xlsBottomMargin;
double
height =
1.5;
excel.SetMargin(ref mt1, ref
height);
excel.SetMargin(ref mt2, ref
height);
excel.SetMargin(ref mt3, ref
height);
excel.SetMargin(ref mt4, ref height);
COM.Excel.cExcelFile.FontFormatting ff =
COM.Excel.cExcelFile.FontFormatting.xlsNoFormat;
string font =
"宋体";
short fontsize =
9;
excel.SetFont(ref font, ref fontsize, ref ff);
byte b1 =
1,
b2 = 12;
short s3 =
12;
excel.SetColumnWidth(ref b1, ref b2, ref s3);
string
header =
"页眉";
string footer =
"页脚";
excel.SetHeader(ref
header);
excel.SetFooter(ref footer);
COM.Excel.cExcelFile.ValueTypes vt =
COM.Excel.cExcelFile.ValueTypes.xlsText;
COM.Excel.cExcelFile.CellFont cf =
COM.Excel.cExcelFile.CellFont.xlsFont0;
COM.Excel.cExcelFile.CellAlignment ca =
COM.Excel.cExcelFile.CellAlignment.xlsCentreAlign;
COM.Excel.cExcelFile.CellHiddenLocked chl =
COM.Excel.cExcelFile.CellHiddenLocked.xlsNormal;
//
报表标题
int
cellformat =
1;
// int rowindex = 1,colindex =
3;
// object title =
(object)strTitle;
// excel.WriteValue(ref vt, ref cf, ref ca, ref chl,ref
rowindex,ref colindex,ref title,ref cellformat);
int
rowIndex =
1;//起始行
int colIndex = 0;
//取得列标题
foreach (DataColumn colhead in
dt.Columns)
{
colIndex++;
string name =
colhead.ColumnName.Trim();
object namestr =
(object)name;
IDictionaryEnumerator Enum =
nameList.GetEnumerator();
while
(Enum.MoveNext())
{
if (Enum.Key.ToString().Trim() ==
name)
{
namestr =
Enum.Value;
}
}
excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex,
ref namestr, ref cellformat);
}
//取得表格中的数据
foreach (DataRow row in
dt.Rows)
{
rowIndex++;
colIndex =
0;
foreach (DataColumn col in
dt.Columns)
{
colIndex++;
if (col.DataType ==
System.Type.GetType("System.DateTime"))
{
object
str;
try
{
str =
(object)(Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
}
catch
{
str =
"";
}
excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex,
ref str, ref
cellformat);
}
else
{
object str =
(object)row[col.ColumnName].ToString();
excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex,
ref str, ref
cellformat);
}
}
}
int ret
= excel.CloseFile();
// if(ret!=0)
// {
// //MessageBox.Show(this,"Error!");
// }
// else
// {
// //MessageBox.Show(this,"请打开文件c:\\test.xls!");
// }
return filename;
}
#endregion
#region 清理过时的Excel文件
private void ClearFile(string
FilePath)
{
String[]
Files =
System.IO.Directory.GetFiles(FilePath);
if (Files.Length >
10)
{
for (int i = 0; i < 10;
i++)
{
try
{
System.IO.File.Delete(Files[i]);
}
catch
{
}
}
}
}
#endregion