public
IList
<
Execlinfo
> execlout()
{
string
sql =
@"select u.UserID,u.UserName,u.Password,u.PasswordSalt,u.PasswordFormat,u.AccountStatus,me.TrueName,
me.Phone,me.Mobile,me.Email,me.Address,me.SN,me.CompanyName,me.Gender,me.Zip,me.Position,
me.Sequence,me.Description,me.Permission,me.NickName,me.BirthDay,me.RegisterSite,me.ProvinceID,
me.CityID,me.Subscription,me.Signature,mem.CardNumber,mem.CardPoints,mem.Balance,mem.CardType,mem.TotalPoints
from dn_user as u inner join dn_membership me on u.UserId=me.UserID inner join
dn_membershipcard mem on me.UserID=mem.UserID"
;
DnDataReader
dnreader =
new
DnDataReader
(
this
);
IList
<
Execlinfo
> list =
new
List
<
Execlinfo
>();
try
{
IDataReader
dr = dnreader.ExecuteReader(sql);
while
(dr.Read())
{
Execlinfo
info = getinfo(dr);
list.Add(info);
}
}
finally
{
dnreader.Close();
}
return
list;
}
public
Execlinfo
getinfo(
IDataReader
dr)
{
Execlinfo
info =
new
Execlinfo
();
info.UserName = dr[
"UserName"
].ToString();
info.Password = dr[
"Password"
].ToString();
info.PasswordSalt = dr[
"PasswordSalt"
].ToString();
info.PasswordFormat = dr[
"PasswordFormat"
].ToString();
info.AccountStatus = dr[
"AccountStatus"
].ToString();
info.Phone = dr[
"Phone"
].ToString();
info.Mobile = dr[
"Mobile"
].ToString();
info.Email = dr[
"Email"
].ToString();
info.Address = dr[
"Address"
].ToString();
info.SN = dr[
"SN"
].ToString();
info.CompanyName = dr[
"CompanyName"
].ToString();
info.Gender = dr[
"Gender"
].ToString();
info.Zip = dr[
"Zip"
].ToString();
info.Position = dr[
"Position"
].ToString();
info.Sequence = dr[
"Sequence"
].ToString();
info.Description = dr[
"Description"
].ToString();
info.Permission = dr[
"Permission"
].ToString();
info.NickName = dr[
"NickName"
].ToString();
info.BirthDay = dr[
"BirthDay"
] !=
Convert
.DBNull ?
Convert
.ToDateTime(dr[
"BirthDay"
]) :
DateTime
.MinValue;
info.RegisterSite = dr[
"RegisterSite"
].ToString();
info.ProvinceID = dr[
"ProvinceID"
].ToString();
info.CityID = dr[
"CityID"
].ToString();
info.Signature = dr[
"Signature"
].ToString();
info.CardNumber = dr[
"CardNumber"
].ToString();
info.CardPoints = dr[
"CardPoints"
].ToString();
info.Balance = dr[
"Balance"
].ToString();
info.CardType = dr[
"CardType"
].ToString();
info.TotalPoints = dr[
"TotalPoints"
].ToString();
info.UserID =
Convert
.ToInt32(dr[
"UserID"
]);
return
info;
}
control层:
public
void
ExeclDown()
{
string
tablecontent = Getoutexecl();
if
(!
string
.IsNullOrEmpty(tablecontent))
{
if
(!
string
.IsNullOrEmpty(Request.QueryString[
"role"
]) && Request.QueryString[
"role"
] ==
"2"
)
{
ExportExcel(
"移动会员数据.xls"
, Getoutexecl());
}
else
{
ExportExcel(
"网站会员数据.xls"
, Getoutexecl());
}
}
}
public
string
Getoutexecl()
{
IList
<
Execlinfo
> lt = iuser.execlout();
if
(!
string
.IsNullOrEmpty(Request.QueryString[
"role"
]) && Request.QueryString[
"role"
] ==
"2"
)
{
lt = lt.Where(c => c.Signature !=
"网站会员"
&&
UserUtils
.GetUserInfo(c.UserID).ContainsRole(300)).ToList();
//list = list.Where(c => c.ContainsRole(100)).ToList();
}
else
{
lt = lt.Where(c => c.Signature ==
"网站会员"
&&
UserUtils
.GetUserInfo(c.UserID).ContainsRole(100)).ToList();
}
StringBuilder
builder =
new
StringBuilder
();
builder.Append(
"<table border='1'>"
);
builder.Append(
"<tr>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>UserName </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Password </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>PasswordSalt </th>"
);
builder.Append(
"<th style='mso-number-format:'\\@';text-align:center;background:#F3F3F3;'>PasswordFormat </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>AccountStatus </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>TrueName </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Phone </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Mobile </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Email </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Address </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>SN </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>CompanyName </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Gender </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Zip </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Position </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Sequence </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Description </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Permission </th>"
);
builder.Append(
"<th style='mso-number-format:'\\@';text-align:center;background:#F3F3F3;'>NickName </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>BirthDay </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>RegisterSite </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>ProvinceID </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>CityID </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Subscription </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Signature </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>CardPoints </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>Balance </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>CardType </th>"
);
builder.Append(
"<th style='text-align:center;background:#F3F3F3;'>TotalPoints </th>"
);
builder.Append(
"</tr>"
);
foreach
(
Execlinfo
t
in
lt)
{
builder.Append(
"<td style='text-align:center;'>"
+ t.UserName +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Password +
"</td>"
);
builder.Append(
"<td style='mso-number-format:\\@;text-align:center;'>"
+ t.PasswordSalt +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.PasswordFormat +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.AccountStatus +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.TrueName +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Phone +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Mobile +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Email +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Address +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.SN +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.CompanyName +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Gender +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Zip +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Position +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Sequence +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Description +
"</td>"
);
builder.Append(
"<td style='mso-number-format:\\@;text-align:center;'>"
+ t.Permission +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.NickName +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.BirthDay.ToString(
"yyyy-MM-dd"
) +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.RegisterSite +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.ProvinceID +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.CityID +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Subscription +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Signature +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.CardPoints +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.Balance +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.CardType +
"</td>"
);
builder.Append(
"<td style='text-align:center;'>"
+ t.TotalPoints +
"</td>"
);
builder.Append(
"</tr>"
);
}
builder.Append(
"</table>"
);
return
builder.ToString();
}
public
void
ExportExcel(
string
FileName,
string
tableContent)
{
//byte[] byteArray = Encoding.UTF8.GetBytes(tableContent);
//byteArray = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("gb2312"), byteArray);
byte
[] byteArray =
Encoding
.GetEncoding(
"gb2312"
).GetBytes(tableContent);
System.Web.
HttpContext
.Current.Response.Clear();
System.Web.
HttpContext
.Current.Response.ClearContent();
System.Web.
HttpContext
.Current.Response.ClearHeaders();
System.Web.
HttpContext
.Current.Response.Charset =
"utf-8"
;
HttpContext.Response.ContentEncoding = System.Text.
Encoding
.GetEncoding(
"utf-8"
);
string
userAgent = System.Web.
HttpContext
.Current.Request.ServerVariables[
"http_user_agent"
].ToLower();
if
(userAgent.Contains(
"firefox"
))
{
System.Web.
HttpContext
.Current.Response.AddHeader(
"Content-Disposition"
,
"attachment;filename="
+ FileName);
}
else
{
System.Web.
HttpContext
.Current.Response.AddHeader(
"Content-Disposition"
,
"attachment;filename="
+ System.Web.
HttpContext
.Current.Server.UrlEncode(FileName));
}
System.Web.
HttpContext
.Current.Response.AddHeader(
"Content-Length"
, byteArray.Length.ToString());
System.Web.
HttpContext
.Current.Response.ContentType =
"application/ms-excel"
;
System.Web.
HttpContext
.Current.Response.BinaryWrite(byteArray);
System.Web.
HttpContext
.Current.Response.Flush();
System.Web.
HttpContext
.Current.Response.Close();
System.Web.
HttpContext
.Current.ApplicationInstance.CompleteRequest();
}
方法二:
public
void
ExportToExcelOfficeALLByAdditional()
{
SearchAdditionalRun search;
string
excelstr =
""
;
string
name = Request.QueryString[
"name"
];
string
date = Request.QueryString[
"date"
];
if
(date ==
"ALL"
)
{
search =
new
SearchAdditionalRun
{
SearchType = SearchTypeEnum.Total,
Status = StatusEnum.Active,
};
}
else
{
search =
new
SearchAdditionalRun
{
ActualDate = date.ToInteger(),
SearchType = SearchTypeEnum.Total,
Status = StatusEnum.Active,
};
}
IList
<AdditionalRunInfo> info = iadditionalrun.Search(search);
#region
AdditionalRunInfo导出字段
string
strNull =
""
;
excelstr =
"AdditionalRunID"
+
","
+
"RequestDescription"
+
","
+
"ReasonID"
+
","
+
"Reason"
+
","
+
"DateRaised"
+
","
+
"ExpectedDate"
+
","
+
"ActualDate"
+
","
+
"ProjectID"
+
","
+
"Project #"
+
","
+
"ProjectName"
+
","
+
"InsertTime"
+
","
+
"LastChanged"
+
","
+
"Status"
+
"\n"
;
//标题
#endregion
foreach
(AdditionalRunInfo item
in
info)
{
#region
AdditionalRunInfo导出字段
string
DateRaised = item.DateRaised ==
DateTime
.MinValue ?
""
: item.DateRaised.ToString(
"yyyy-MM-dd"
);
string
ExpectedDate = item.ExpectedDate ==
DateTime
.MinValue ?
""
: item.ExpectedDate.ToString(
"yyyy-MM-dd"
);
string
InsertTime = item.InsertTime ==
DateTime
.MinValue ?
""
: item.InsertTime.ToString(
"yyyy-MM-dd"
);
string
LastChanged = item.LastChanged ==
DateTime
.MinValue ?
""
: item.LastChanged.ToString(
"yyyy-MM-dd"
);
string
ProjectNumber = ibkfm.GetBKFM(item.ProjectID).ProjectNumber;
string
ProjectName = ibkfm.GetBKFM(item.ProjectID).ProjectName;
string
Reason = isimplecategory.GetSimpleCategoryInfo(item.ReasonID).GetLangInfo(LanguageTypeEnum.Chinese).CategoryName;
excelstr += item.AdditionalRunID +
","
+
StringFormat(item.RequestDescription) +
","
+
item.ReasonID +
","
+
Reason +
","
+
DateRaised +
","
+
ExpectedDate +
","
+
date +
","
+
item.ProjectID +
","
+
ProjectNumber +
","
+
ProjectName +
","
+
InsertTime +
","
+
LastChanged +
","
+
item.Status +
"\n"
;
//标题
#endregion
}
string
url = Server.MapPath(
"~\\fileupload\\"
) + name +
".csv"
;
//要存储的路径
string
path =
"/fileupload/"
+ name +
".csv"
;
//导出文件的相对路径,用于下载
StreamWriter
sw =
new
StreamWriter
(url,
false
,
Encoding
.GetEncoding(
"GB2312"
));
//把文件作为文件流保存在固定的路径
sw.Write(excelstr);
// 文件流写出
sw.Flush();
//判断是否有文件,如果有则删除
sw.Dispose();
//释放流的资源
Response.Write(
""
+ path +
""
);
//输出文件相对路径
}