#region 导出文件
private static void ImportPage(HttpContext Context, string app, string entity, string id)
{
#region 获取数据id
AppEntity.App AppObj = AppEntity.GetApp(app);
AppEntity.Entity En = AppObj.GetEntity(entity);
#endregion
string columns = Context.Request.Form["columns"];
string striphtml = Context.Request.Form["striphtml"];
XmlDocument ColDom = new XmlDocument();
Hashtable param = new Hashtable();
param.Add("appsetting", AppObj.AppDom);
param.Add("entitysetting", En.EntityDom);
param.Add("urn:functions-sbsinc-com:ext", new SBS.Common.XslExtensionObject());
param.Add("urn:functions-sbsinc-com:AppEntity", new SBS.AppEntity.AppEntityXslExtension());
param.Add("app", app);
param.Add("entity", entity);
param.Add("action", "export");
param.Add("columns", ColDom);
string Folder = AppEntity.GetAppFolder() + app + "http://www.cnblogs.com/jacd/admin/file://entity//" + entity + "http://www.cnblogs.com/jacd/admin/file://data//";
string html = SBS.Common.Convert.xml2html("<root/>", AppEntity.GetThemePath() + "common\\import.xsl", param);
Context.Response.Write(html);
}
private static void DownTemplate(HttpContext Context, string app, string entity, string id)
{
#region 获取数据id
AppEntity.App AppObj = AppEntity.GetApp(app);
AppEntity.Entity En = AppObj.GetEntity(entity);
var columns = En.columns.ToHashSet();
var sysColumnDict = AppEntity.GetAppBuilderSetting().Descendants("syscol").Elements("col").Select(
n => n.GetAttrValue("name")).ToHashSet();
#endregion
sysColumnDict.Remove("title");
sysColumnDict.Remove("description");
columns.ExceptWith(sysColumnDict);
string filename = AppObj.name + "-" + En.title + ".csv";
StreamWriter sw = new StreamWriter(Context.Response.OutputStream, Encoding.UTF8);
StringBuilder sb = new StringBuilder();
foreach (var c in columns)
{
sb.Append(c + ",");
}
sw.Write(sb.ToString().Substring(0, sb.Length - 1));
sw.Write("\r\n");
if (filename != "")
{
Context.Response.ContentEncoding = Encoding.UTF8;
Context.Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
// Context.Response.ContentType = "application/octet-stream";
// Context.Response.ContentType = "application/csv";
sw.Close();
Context.Response.End();
}
}
#region 下载 Xls 文件
private static void DownTemplateXls(HttpContext Context, string app, string entity, string id)
{
#region 获取数据id
AppEntity.App AppObj = AppEntity.GetApp(app);
AppEntity.Entity En = AppObj.GetEntity(entity);
string tableName = "ColumnExample";
var columns = En.columns.ToHashSet();
var sysColumnDict = AppEntity.GetAppBuilderSetting().Descendants("syscol").Elements("col").Select(
n => n.GetAttrValue("name")).ToHashSet();
sysColumnDict.Remove("title");
sysColumnDict.Remove("description");
columns.ExceptWith(sysColumnDict);
StringBuilder sb = new StringBuilder();
sb.Append(" CREATE TABLE " + tableName + " (");
foreach (var c in columns)
{
sb.Append(c + " VARCHAR(99),");
}
string CreateSql = sb.ToString();
CreateSql = CreateSql.Trim(',');
CreateSql = CreateSql + ")";
#endregion
string newFile = (Context.Server.MapPath(".") + "\\" + "TableColumn.xls");
File.Delete(newFile);
File.Copy(@"D:\tasktoday.353.us\fb.tasktoday.com\TableColumn.xls", newFile, true);
string cnStr = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" +
newFile + ";Extended Properties=Excel 8.0";
using (var cn = new OleDbConnection(cnStr))
{
cn.Open();
var cmd = new OleDbCommand(CreateSql, cn);
cmd.ExecuteNonQuery();
cmd.Dispose();
cn.Close();
}
MemoryStream ms = new MemoryStream(File.ReadAllBytes(newFile));
ms.WriteTo(Context.Response.OutputStream);
ms.Close();
Context.Response.ContentEncoding = Encoding.UTF8;
string filename = AppObj.name + "-" + En.title + ".xls";
Context.Response.AddHeader("Content-Disposition", "attachment; filename= " + filename);
Context.Response.ContentType = "application/ms-excel";
Context.Response.End();
}
#endregion
#endregion
/// CSV文件导入TABLE
/// </summary>
/// <param name="Context"></param>
/// <param name="app"></param>
/// <param name="entity"></param>
private static void FileImport(HttpContext Context, string app, string entity)
{
AppEntity.Entity En = AppEntity.GetApp(app).GetEntity(entity);
string Doublequotes = Context.Request.Form["Doublequotes"];
char SplitStr = Context.Request.Form["SplitStr"][0];
HttpPostedFile httpFile = Context.Request.Files["CSVfile"];
string url = "/common/?app=" + app + "&entity=" + entity + "&action=import";
if (httpFile.ContentLength < 1)
{
Context.Response.Write("文件不能为空");
return;
}
if (httpFile.FileName.ToUpper().IndexOf("csv".ToUpper()) > 0)
{
WriteCSV(Context, En, Doublequotes, httpFile, url);
}
if (httpFile.FileName.ToUpper().IndexOf("xls".ToUpper()) > 0 )
{
WriteXls(Context, En, Doublequotes, httpFile, url);
}
}
private static void WriteCSV(HttpContext Context, AppEntity.Entity En, string Doublequotes, HttpPostedFile httpFile, string url)
{
string dir = Path.GetTempPath();
string fileName = Path.Combine(dir, "importdata.csv");
File.Delete(fileName);
httpFile.SaveAs(fileName);
string tableName = "[importdata.csv]";
string cnStr =
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Extended Properties='text;HDR=Yes;FMT=Delimited';" +
"Data Source=" + dir + ";";
WriteToTable(cnStr,Context, En, Doublequotes, url, dir, tableName);
}
private static void WriteXls(HttpContext Context, AppEntity.Entity En, string Doublequotes, HttpPostedFile httpFile, string url)
{
string dir = Context.Server.MapPath(".");
string fileName = Path.Combine(dir, "TableColumnEntity.xls");
File.Delete(fileName);
httpFile.SaveAs(fileName);
string tableName = "[ColumnExample$]";
string cnStr = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" +
fileName + ";Extended Properties=Excel 8.0";
WriteToTable(cnStr,Context, En, Doublequotes, url, fileName, tableName);
}
private static void WriteToTable(string cnStr,HttpContext Context, AppEntity.Entity En, string Doublequotes, string url, string DataSouce, string tableName)
{
DataTable dTab = new DataTable();
int ValueCount = 0;
using (var cn = new OleDbConnection(cnStr))
{
cn.Open();
string sql = "SELECT * FROM " + tableName;
OleDbDataAdapter da = new OleDbDataAdapter(sql, cn);
da.Fill(dTab);
for (int i = 0; i < dTab.Rows.Count; i++)
{
AppEntity.Record row = En.Create();
foreach (DataColumn column in dTab.Columns)
{
string value = dTab.Rows[i][column].ToString();
string ColumnName = column.ColumnName;
if (Doublequotes == "N")
{
value = value.Trim('"');
}
if (En.GetColumn(ColumnName).type == "double" ||
En.GetColumn(ColumnName).type == "integer")
{
value=(value.ToDouble(0)).ToString();
}
if (En.GetColumn(ColumnName).type == "datetime" ||
En.GetColumn(ColumnName).type == "date")
{
value = SBS.Common.Utility.GetNowTime(value.ToDateTime(DateTime.Now));
}
row.SetColumnValue(ColumnName, value);
}
try
{
row.Add();
ValueCount++;
}
catch
{
}
}
Context.Response.Redirect(url + "&ValueCount=" + ValueCount);
}
}