62,046
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Text;
using System.IO;
namespace Test
{
public partial class XmlExcel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//存放模板文件内容
string fileContent = string.Empty;
//模板文件位置
string modleFileName = Server.MapPath(".") + "\\ExcelModleFile.xls";
//生成文件位置
string renderFileName = Server.MapPath(".") + "\\ExcelFile.xls";
//读出并保存模板文件内容
StreamReader sr = new StreamReader(modleFileName, System.Text.Encoding.GetEncoding("gb2312"));
fileContent = sr.ReadToEnd();
sr.Close();
//循环生成数据行
StringBuilder sbRowsText = new StringBuilder(1024);
sbRowsText.Append("<Row ss:AutoFitHeight=\"0\">");
sbRowsText.Append("<Cell ss:StyleID=\"s24\" ss:HRef=\"");
//设置超链接地址
sbRowsText.Append("http://www.126.com/");
sbRowsText.Append("\"><Data ss:Type=\"String\">View</Data></Cell>");
sbRowsText.Append("<Cell ss:StyleID=\"s22\"><Data ss:Type=\"String\">");
//设置内容
sbRowsText.Append("Content");
sbRowsText.Append("</Data></Cell>");
sbRowsText.Append("</Row>");
//保存完整Excel内容的字符串
StringBuilder sbRender = new StringBuilder();
//获得模板内容
sbRender.Append(fileContent);
//设置Excel数据行
sbRender.Replace(@"[RowCount]", "3");
//设置Excel标题
sbRender.Replace(@"[Header]", "Title");
//添加数据行
sbRender.Replace(@"[DataRows]", sbRowsText.ToString());
lblXml.Text = sbRender.ToString();
//将内容写入文件
StreamWriter sw = new StreamWriter(renderFileName);
sw.Write(sbRender.ToString());
sw.Close();
//将文件输出到客户端
Response.Charset = "GB2312";
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(renderFileName));
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
Response.WriteFile(renderFileName);
Response.End();
}
}
}
DataTable dt = this.GetDataSource();
DataView dv = dt.DefaultView;
dv.Sort = "UserName,VoucherNo";
if (dv.Count == 0)
{
CCClient.AlertMessage("没有可以导出的资料!");
return;
}
if (!Directory.Exists(Server.MapPath("Files/" + DateTime.Now.ToString("yyyyMM"))))
{
Directory.CreateDirectory(Server.MapPath("Files/" + DateTime.Now.ToString("yyyyMM")));
}
string GetSeqNo = this.GetSeqNo();
string FileName = DateTime.Now.ToString("yyyyMMdd") + "第 "+GetSeqNo+" 批.xls";
string sNewFileName = "Files/" + DateTime.Now.ToString("yyyyMM") + "/" + FileName ;
string sNewFile = Server.MapPath(sNewFileName);
try
{
File.Copy(Server.MapPath("Files/format.xls"), sNewFile);
}
catch (Exception er)
{
CCClient.AlertMessage(er.Message);
return;
}
//取Email地址
string Email = new BLL.Admin.cSetting().GetConfigValue("Email");
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=True;Data Source=" + sNewFile + ";Extended Properties=Excel 8.0;";
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
OleDbCommand cmd = null;
System.Data.OleDb.OleDbTransaction tran = null;
string ErrMsg = "";
int iCount = 0;
try
{
conn.Open();
tran = conn.BeginTransaction();
string strSQL = "INSERT INTO [A$] ([证件类型], [证件编号], [姓名], [地址], [电话], [邮件地址], [两码发放方式], [证书类型]) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
cmd = new OleDbCommand(strSQL, conn,tran);
for (int i = 0; i < 8; i++)
{
cmd.Parameters.Add(i.ToString(), OleDbType.VarChar);
}
cmd.Parameters[5].Value = Email;
cmd.Parameters[6].Value = "1";
string Ids = "";
string LastUserName = "";
bool bHasRows = false;
foreach (DataRowView row in dv)
{
string Name = row["UserName"].ToString().Trim();
if (Name == LastUserName)
{
continue;
}
LastUserName = Name;
if (row["ActionStatus"].ToString() == "1") //处理中
{
continue;
}
iCount++;
cmd.Parameters[0].Value = row["UserIdType"].ToString();
cmd.Parameters[1].Value = row["UserIdNo"].ToString();
cmd.Parameters[2].Value = Name;
cmd.Parameters[3].Value = row["Address"].ToString();
cmd.Parameters[4].Value = row["Phone"].ToString();
//cmd.Parameters[5].Value = row["Email"].ToString();
cmd.Parameters[7].Value = row["CerType"].ToString();
cmd.ExecuteNonQuery();
Ids += row["seqNo"].ToString() + ",";
bHasRows = true;
//sb.Append(row["SeqNo"].ToString() + ",");
}
if (!bHasRows)
{
CCClient.AlertMessage("没有可以导出的资料");
conn.Close();
File.Delete(sNewFile);
return;
}
if (Ids.Length > 0)
{
Ids = Ids.Substring(0, Ids.Length - 1);
}
if (!new BLL.Cer.cNewCer().UpdateCerInfoStatus(Ids,"1", CurrentUser.UserCode, ref ErrMsg))
{
tran.Rollback();
CCClient.AlertMessage("更新状态时错误,本次操作取消" + ErrMsg);
return;
}
tran.Commit();
}
catch (Exception er)
{
if (tran != null)
{
tran.Rollback();
}
CCClient.AlertMessage("生成错误"+er.Message);
return;
}
finally
{
if (tran != null)
{
tran.Dispose();
}
conn.Dispose();
if (cmd != null)
{
cmd.Dispose();
}
}
Response.Redirect(sNewFileName);