完成第七步——遍历子节点
DataImport.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using DataAccess.PO;
using BusinessFacade;
using System.Xml;
public partial class DataManagement_DataImport : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.rawTable = ViewState[RawDataViewStateName] as DataTable;
this.mappingTable = ViewState[MappingTableViewStateName] as DataTable;
this.previewTable = ViewState[PreviewTableViewStateName] as DataTable;
}
DataTable rawTable;
DataTable mappingTable;
DataTable previewTable;
private readonly string RawDataViewStateName = "CEICRawData";
private readonly string MappingTableViewStateName = "CEICMappingData";
private readonly string PreviewTableViewStateName = "PreviewData";
/// <summary>
/// 显示指标对应
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ShowMappingBtn_Click(object sender, EventArgs e)
{
///取数据类型
string DataType = TypeDropDownList.SelectedItem.ToString();
if (FileUpload.FileName == null || FileUpload.FileName == "")
{
if (this.mappingTable == null)
return;//do nothing if filename is not specified and mappingtable is null
else
{
IndicatorMappingGridView.DataSource = mappingTable;
IndicatorMappingGridView.DataBind();
IndicatorMappingGridView.Visible = true;
PreviewBtn.Visible = true;
PreviewGridView.Visible = false;
ImportBtn.Visible = false;
return;
}
}
if (DataType == "EXCEL")
{
string path = Request.MapPath("~/UploadFiles") + "\\CEICBase.xls";//TODO: resolve protential filename conflict
FileUpload.SaveAs(path);
DataImport dtImporter = new DataImport();
try
{
rawTable = dtImporter.Build_CEICRawDataTable(path, TextBoxSheetName.Text.Trim());
}
catch
{
Response.Write("<script language=javascript>");
Response.Write("alert('数据模板出错,无法生成表格!');");
Response.Write("</script>");
return;
}
}
else if (DataType == "XML")
{
string path = Request.MapPath("~/UploadFiles") + "\\PBCmonth.xml";
FileUpload.SaveAs(path);
//XmlTextReader reader = null;
//string childstring = null;
DataTable xmlDT = new DataTable();
XmlDocument xmld = new XmlDocument();
xmld.Load(path);
//查找根节点,并将它及它的子节点一同添加到datatable中
XmlNode xnod = xmld.DocumentElement;
DataTable dt = new DataTable();
//向datatable中添加数据
dt.Columns.Add("Node", typeof(System.String));
dt.Columns.Add("NodeName", typeof(System.String));
dt.Columns.Add("NodeValue", typeof(System.String));
try
{
rawTable = DataImport.AddWithChildren(xnod, 1, ref dt);
}
catch
{
Response.Write("<script language=javascript>");
Response.Write("alert('数据模版出错,无法生成表格!');");
Response.Write("</script>");
return;
}
//DataTable Monthdt = null;
if (rawTable.Rows.Count == 0)
{
Response.Write("<script language=javascript>");
Response.Write("alert('目前模板中没有数据!');");
Response.Write("</script>");
return;
}
}
//放到viewstate里面
ViewState[RawDataViewStateName] = rawTable;
LoadMappingTable();
IndicatorMappingGridView.DataSource = mappingTable;
IndicatorMappingGridView.DataBind();
IndicatorMappingGridView.Visible = true;
PreviewBtn.Visible = true;
}
protected void LoadMappingTable()
{
Session["dataType"] = DataSourceDropDownList.SelectedItem.ToString();
string DataType = Session["dataType"] as string;
if (DataType == "CEIC")
{
mappingTable = new DataTable();
mappingTable.Columns.Add("Code");
mappingTable.Columns.Add("Name");
mappingTable.Columns.Add("IndicatorID");
mappingTable.Columns.Add("IndicatorDataTypeID");
DataRow codeRow = null;
foreach (DataRow row in rawTable.Rows)
{
if (row[0] as string == "代码")
{ codeRow = row; break; }
}
foreach (DataColumn col in rawTable.Columns)
{
int colIdx = rawTable.Columns.IndexOf(col);
if (colIdx == 0) continue;//第一行不是数据行
string codeStr = codeRow[colIdx] as string;
IndicatorDataIntegrationInfo info =
IndicatorDataIntegrationManager.GetIndicatorDataIntegrationInfo("CEIC", codeStr);//Hardcode
if (info == null)
mappingTable.Rows.Add(new string[] { codeStr, col.ColumnName, "", "" });
else
mappingTable.Rows.Add(new string[] { codeStr, col.ColumnName, info.IndicatorID.ToString(), info.IndicatorDataTypeID.ToString() });
}
}
else if (DataType == "PBC")
{
mappingTable = new DataTable();
mappingTable.Columns.Add("Code");
mappingTable.Columns.Add("Name");
mappingTable.Columns.Add("IndicatorID");
mappingTable.Columns.Add("IndicatorDataTypeID");
//过滤重复数据
DataView myDataView = new DataView(rawTable);
string[] strComuns ={ "IndicatorID", "TypeID" };
DataTable dt = myDataView.ToTable(true, strComuns);
//DataColumn codeColumn = dt.Rows[0]["IndicatorID"];
//DataColumn typeColumn = dt.Rows[0]["TypeID"];

foreach (DataRow row in dt.Rows)
{
//取指标
int rowIdx = dt.Rows.IndexOf(row);
string codeColumn = dt.Rows[rowIdx]["IndicatorID"] as string;
string typeColumn = dt.Rows[rowIdx]["TypeID"].ToString() as string;
string codeStr = codeColumn + ":" + typeColumn;
//通过IndicatorID取IndicatorName
string filter1 = "IndicatorID LIKE '%" + codeColumn + "%'";
PBCIntegrationManager manager = new PBCIntegrationManager();
DataSet ds1 = new DataSet();
ds1 = manager.GetIndicatorName(filter1);
string IndicatorName = ds1.Tables[0].Rows[0][0].ToString().Trim();
//List<PBCIndicatorCode> cnnameList = new List<PBCIndicatorCode>();
//cnnameList = manager.GetCnnameList(filter1);
//foreach (PBCIndicatorCode cnname in cnnameList)
//{
// codeName = cnname.IndicatorName.Trim();
//}
//通过TypeID取TypeName
string filter2 = "TypeID LIKE '%" + typeColumn + "%'";
DataSet ds2 = new DataSet();
ds2 = manager.GetTypeName(filter2);
string typeName = ds2.Tables[0].Rows[0][0].ToString().Trim();
string nameStr = IndicatorName + ":" + typeName;

IndicatorDataIntegrationInfo info =
IndicatorDataIntegrationManager.GetIndicatorDataIntegrationInfo("PBC", codeStr);//Hardcode
if (info == null)
mappingTable.Rows.Add(new string[] { codeStr, nameStr, "", "" });
else
mappingTable.Rows.Add(new string[] { codeStr, nameStr, info.IndicatorID.ToString(), info.IndicatorDataTypeID.ToString() });
}
}
//放到viewstate里面
ViewState[MappingTableViewStateName] = mappingTable;
}
/// <summary>
/// 指标对应标详细信息显示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void IndicatorMappingGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Label codeLb = e.Row.FindControl("CodeLabel") as Label;
// Label name = e.Row.FindControl("NameLabel") as Label;
Label indicatorIDLb = e.Row.FindControl("IDLabel") as Label;
Label indicatorDatatypeIDLb = e.Row.FindControl("TypeLabel") as Label;
Common_UserControl_IndicatorSingleSelectControl indicatorCtrl = e.Row.FindControl("IndicatorControl") as Common_UserControl_IndicatorSingleSelectControl;
if (e.Row.Cells[0] == null || indicatorIDLb == null || indicatorDatatypeIDLb == null || indicatorCtrl == null) return;
indicatorCtrl.IndicatorSessionVariableName = e.Row.Cells[0].Text.Trim();
long id;
int dtID;
if (long.TryParse(indicatorIDLb.Text.Trim(), out id) && int.TryParse(indicatorDatatypeIDLb.Text.Trim(), out dtID))
{
Indicator indicator = new Indicator();
indicator.IndicatorID = id;
indicator.IndicatorDataTypeID = dtID;
indicatorCtrl.SelectedIndicator = indicator;
}
if (IndicatorMappingGridView.EditIndex == e.Row.RowIndex)
indicatorCtrl.ReadOnly = false;
else
indicatorCtrl.ReadOnly = true;
}
protected void PreviewBtn_Click(object sender, EventArgs e)
{
////DataTable rawDT = ViewState[RawDataViewStateName] as DataTable;
////DataTable mappingDT = ViewState[MappingTableViewStateName] as DataTable;
if (this.rawTable == null || this.mappingTable == null) return;
//databind
DataImport dataImporter = new DataImport();
string DataType = Session["dataType"] as string;
if (DataType == "CEIC")
{
this.previewTable = dataImporter.Build_CEICDataImportPreviewDtTable(this.rawTable,
this.mappingTable, FrequencyCheckControl1.Frequency);
}
else if (DataType == "PBC")
{
this.previewTable = dataImporter.Build_PBCDataImportPreviewDtTable(this.rawTable,
this.mappingTable, FrequencyCheckControl1.Frequency);
}
//edit gridview
BoundField field = PreviewGridView.Columns[1] as BoundField;
if (FrequencyCheckControl1.Frequency == TimeSequence.MONTH_BASED)
{
field.HeaderText = "月度";
field.DataField = "MonthNo";
}
else if (FrequencyCheckControl1.Frequency == TimeSequence.QUARTER_BASED)
{
field.HeaderText = "季度";
field.DataField = "QuarterNo";
}
else
PreviewGridView.Columns.RemoveAt(1);
//放到viewstate里面
ViewState[PreviewTableViewStateName] = previewTable;
PreviewGridView.DataSource = previewTable.DefaultView;
PreviewGridView.DataBind();
IndicatorMappingGridView.Visible = false;
PreviewGridView.Visible = true;
ImportBtn.Visible = true;
}
protected void IndicatorMappingGridView_RowEditing(object sender, GridViewEditEventArgs e)
{
IndicatorMappingGridView.EditIndex = e.NewEditIndex;
IndicatorMappingGridView.DataSource = this.mappingTable;
IndicatorMappingGridView.DataBind();


}
protected void IndicatorMappingGridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
Common_UserControl_IndicatorSingleSelectControl indicatorCtrl =
IndicatorMappingGridView.Rows[e.RowIndex].FindControl("IndicatorControl") as Common_UserControl_IndicatorSingleSelectControl;
if (indicatorCtrl == null) return;
IndicatorMappingGridView.EditIndex = -1;
IndicatorMappingGridView.DataSource = this.mappingTable;
IndicatorMappingGridView.DataBind();
}
protected void IndicatorMappingGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Common_UserControl_IndicatorSingleSelectControl indicatorCtrl =
IndicatorMappingGridView.Rows[IndicatorMappingGridView.EditIndex].FindControl("IndicatorControl") as Common_UserControl_IndicatorSingleSelectControl;
if (indicatorCtrl == null || indicatorCtrl.SelectedIndicator == null) return;
//TODO: update idnicator mappings
IndicatorDataIntegrationInfo info = new IndicatorDataIntegrationInfo();
info.IndicatorID = int.Parse(indicatorCtrl.SelectedIndicator.IndicatorID.ToString());
info.IndicatorDataTypeID = indicatorCtrl.SelectedIndicator.IndicatorDataTypeID;
info.Frequency = FrequencyCheckControl1.Frequency;
string DataType = DataSourceDropDownList.SelectedItem.ToString();
if (DataType == "CEIC")
{
info.ExportSysName = "CEIC";
}
else if (DataType == "PBC")
{
info.ExportSysName = "PBC";
}
info.ExportDataID = IndicatorMappingGridView.Rows[IndicatorMappingGridView.EditIndex].Cells[0].Text;
if (IndicatorDataIntegrationManager.AddIndicatorDataIntegrationInfo(info) > 0)
Response.Write(EWSWebPageHelper.ShowAlertScript("成功添加一条指标集成信息"));
IndicatorMappingGridView.EditIndex = -1;
LoadMappingTable();
IndicatorMappingGridView.DataSource = this.mappingTable;
IndicatorMappingGridView.DataBind();
}

protected void ImportBtn_Click(object sender, EventArgs e)
{
if (this.previewTable == null) return;
int rowcount = this.previewTable.Rows.Count;
if (rowcount < 1) return;
for (int i = 0; i < rowcount; i++)
{
if (FrequencyCheckControl1.Frequency == TimeSequence.MONTH_BASED)
{//导入月度数据
string UID = previewTable.Rows[i]["IndicatorID"].ToString();
IndicatorMonthBase mod = new IndicatorMonthBase();
mod.DateString = previewTable.Rows[i]["YearNo"].ToString().Trim() + "-" + previewTable.Rows[i]["MonthNo"].ToString().Trim();//modify by shangwei to fix bug
mod.CreatedAt = System.DateTime.Now;
mod.IndicatorID = int.Parse(UID);
mod.IndicatorDataTypeID = int.Parse(previewTable.Rows[i]["TypeID"].ToString());
mod.ProviderID = int.Parse(previewTable.Rows[i]["ProviderID"].ToString());
mod.IndicatorValue = double.Parse(previewTable.Rows[i]["IndicatorValue"].ToString());
mod.CreatedBy = ((EWSMasterPage)Master).EWSUserID;
mod.isOriginal = true;
IndicatorMonthBaseManager bll = new IndicatorMonthBaseManager();
if (bll.RemoveOldMonthDataByImport(mod) == false)
{
Response.Write("<script language=javascript>");
Response.Write("alert('指标数据行:" + i.ToString() + "‘" + PreviewGridView.Rows[i].Cells[2].Text + "’无法删除原有数据,请数据是否存在关联!');");
Response.Write("</script>");
return;
}
if (bll.Add(mod) == 0)
{
Response.Write("<script language=javascript>");
Response.Write("alert('指标数据行:‘" + PreviewGridView.Rows[i].Cells[2].Text + "’添加有错,请检查表格数据格式!');");
Response.Write("</script>");
return;
}
}
else if (FrequencyCheckControl1.Frequency == TimeSequence.QUARTER_BASED)
{//导入季度数据
string UID = previewTable.Rows[i]["IndicatorID"].ToString();
IndicatorQuarterBase mod = new IndicatorQuarterBase();
mod.DateString = previewTable.Rows[i]["YearNo"].ToString().Trim() + "-" + previewTable.Rows[i]["QuarterNo"].ToString().Trim();
mod.CreatedAt = System.DateTime.Now;
mod.IndicatorID = int.Parse(UID);
mod.IndicatorDataTypeID = int.Parse(previewTable.Rows[i]["TypeID"].ToString());
mod.ProviderID = int.Parse(previewTable.Rows[i]["ProviderID"].ToString());
mod.IndicatorValue = double.Parse(previewTable.Rows[i]["IndicatorValue"].ToString());
mod.CreatedBy = ((EWSMasterPage)Master).EWSUserID;
mod.isOriginal = true;
IndicatorQuarterBaseManager bll = new IndicatorQuarterBaseManager();
if (bll.RemoveOldQuaterDataByImport(mod) == false)
{
Response.Write("<script language=javascript>");
Response.Write("alert('指标数据行:" + i.ToString() + "‘" + PreviewGridView.Rows[i].Cells[2].Text + "’无法删除原有数据,请数据是否存在关联!');");
Response.Write("</script>");
return;
}
if (bll.Add(mod) == 0)
{
Response.Write("<script language=javascript>");
Response.Write("alert('指标数据行:‘" + PreviewGridView.Rows[i].Cells[2].Text + "’添加有错,请检查表格数据格式!');");
Response.Write("</script>");
return;
}
}
else if (FrequencyCheckControl1.Frequency == TimeSequence.YEAR_BASED)
{//导入年度数据
string UID = previewTable.Rows[i]["IndicatorID"].ToString();
IndicatorYearBase mod = new IndicatorYearBase();
mod.DateString = previewTable.Rows[i]["YearNo"].ToString().Trim();// + "-" + previewTable.Rows[i]["QuarterNo"].ToString().Trim();
mod.CreatedAt = System.DateTime.Now;
mod.IndicatorID = int.Parse(UID);
mod.IndicatorDataTypeID = int.Parse(previewTable.Rows[i]["TypeID"].ToString());
mod.ProviderID = int.Parse(previewTable.Rows[i]["ProviderID"].ToString());
mod.IndicatorValue = double.Parse(previewTable.Rows[i]["IndicatorValue"].ToString());
mod.CreatedBy = ((EWSMasterPage)Master).EWSUserID;
mod.isOriginal = true;
IndicatorYearBaseManager bll = new IndicatorYearBaseManager();
if (bll.RemoveOldYearDataByImport(mod) == false)
{
Response.Write("<script language=javascript>");
Response.Write("alert('指标数据行:" + i.ToString() + "‘" + PreviewGridView.Rows[i].Cells[2].Text + "’无法删除原有数据,请数据是否存在关联!');");
Response.Write("</script>");
return;
}
if (bll.Add(mod) == 0)
{
Response.Write("<script language=javascript>");
Response.Write("alert('指标数据行:‘" + PreviewGridView.Rows[i].Cells[2].Text + "’添加有错,请检查表格数据格式!');");
Response.Write("</script>");
return;
}
}
}
//数据导入成功,进行提示
Response.Write("<script language=javascript>");
Response.Write("alert('表格中的数据已成功导入!\\n共导入数据 " + rowcount.ToString() + " 条');");
Response.Write("</script>");
ViewState.Clear();
PreviewBtn.Visible = false;
PreviewGridView.Visible = false;
ImportBtn.Visible = false;
//Response.Redirect(Request.Url.ToString());
}
}
IndicatorConfiguration.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.ComponentModel;
using System.Xml;
using System.Data.SqlClient;
using System.IO;
using System.Xml.Serialization;
using System.Diagnostics;
using System.Text;
using DataAccess.PO;
using BusinessFacade;
public partial class DataManagement_IndicatorConfiguration : System.Web.UI.Page
{
//private void GetIndicatorData()
//{
// //获取用户输入
// string startDateString = DateRangeControl1.StartDateString;
// string endDateString = DateRangeControl1.EndDateString;
// //获取数据
// TimeSequenceDataManager.GetIndicatorMonthBasedTimeSequenceValue(IndicatorMultiSelectControl1.SelectedIndicatorList, startDateString, endDateString);
//}
private void Bind(int pageIndex)
{
//if (startyear.Text == "" || startmonth.Text == "")
// startLabel.Text = "请输入起始年月!";
//if (endyear.Text == "" || endmonth.Text == "")
// endLabel.Text = "请输入终止年月!";
//StringBuilder indiCodes = new StringBuilder();
//if (IndicatorMultiSelectControl1.SelectedIndicatorList != null)
//{
// foreach (Indicator indi in IndicatorMultiSelectControl1.SelectedIndicatorList)
// {
// indiCodes.Append("'" + indi.IndicatorCode + "',");//加逗号是因为参数里有逗号分隔符
// }
//}
//if (indiCodes == null || indiCodes.Length == 0)
// return;
//indiCodes.Remove(indiCodes.Length - 1, 1);//去掉加上的逗号
string indiID = Session["IndicatorID"] as string;
string typeid = Session["TypeID"] as string;
//string startyear = DateRangeControl1.StartDateString.Substring(DateRangeControl1.StartDateString.Length - 7, 4);
//string startmonth = DateRangeControl1.StartDateString.Substring(DateRangeControl1.StartDateString.Length - 2, 2);
//string endyear = DateRangeControl1.EndDateString.Substring(DateRangeControl1.EndDateString.Length - 7, 4);
//string endmonth = DateRangeControl1.EndDateString.Substring(DateRangeControl1.EndDateString.Length - 2, 2);
//string filter = "IndicatorID in ('" + indiID.ToString() + "') and TypeID in ( " + typeid.ToString() + " ) and YearNo * 100 + MonthNo > " + startyear + " and YearNo < " + endyear + " and MonthNo > " + startmonth + " and MonthNo < " + endmonth;
try
{
string startyear = DateRangeControl1.StartDateString.Substring(DateRangeControl1.StartDateString.Length - 7, 4);
string startmonth = DateRangeControl1.StartDateString.Substring(DateRangeControl1.StartDateString.Length - 2, 2);
string startdate = startyear + startmonth;
string endyear = DateRangeControl1.EndDateString.Substring(DateRangeControl1.EndDateString.Length - 7, 4);
string endmonth = DateRangeControl1.EndDateString.Substring(DateRangeControl1.EndDateString.Length - 2, 2);
string enddate = endyear + endmonth;
string filter = "IndicatorID in ('" + indiID.ToString() + "') and TypeID in ( " + typeid.ToString() + " ) and YearNo*100+MonthNo > " + startdate + " and YearNo*100+MonthNo <" + enddate;
///从PBC库中取出数据
PBCIntegrationManager manager = new PBCIntegrationManager();
List<Import_MonthBase> monthbase = new List<Import_MonthBase>();
monthbase = manager.GetEntityList(filter);
Session["PBCmonthbase"] = manager.GetList(filter);

DataTable dt = PBCAnalyzer.GetPBCMonthBase(monthbase);
ImportGridView.DataSource = dt;
ImportGridView.PageIndex = pageIndex;
ImportGridView.DataBind();
}
catch (Exception e) { }
}
protected void ShowButton_Click(object sender, EventArgs e)
{
///从EWS库取指标
ImportGridView.Visible = true;
Bind(0);
}
protected void ImportGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
//for (int i = 0; i < 20; i++)
//{
// ImportGridView.DataKeys[ImportGridView.Items[i].ItemIndex].ToString();
//}
Bind(e.NewPageIndex);
}
protected void SelectBoxCheckedChanged(object sender, EventArgs e)
{
//CheckBox box = (CheckBox)sender;
//int rowIndex = ((GridViewRow)box.NamingContainer).RowIndex;
//string uid = ImportGridView.DataKeys[rowIndex].Value.ToString();
//Response.Write("<script>alert('" + uid + "')</script>");
////取出uid对应数据
//string checkResult = "UID in ( " + uid.ToString() + " )";
//PBCIntegrationManager manager = new PBCIntegrationManager();
//List<Import_MonthBase> monthbase = new List<Import_MonthBase>();
//monthbase = manager.GetEntityList(checkResult);
//Session["PBCmonthbase"] = monthbase;
}
protected void Import_Click(object sender, EventArgs e)
{
///从EWS库取指标
//List<Import_MonthBase> mbs = Session["PBCmonthbase"] as List<Import_MonthBase>;
//string file = "D:\\PBCmonth.xml";
//TextWriter writer = new StreamWriter(file);
//XmlSerializer sr = new XmlSerializer(typeof(List<Import_MonthBase>));
//sr.Serialize(writer, mbs);
//writer.Close();
if (Session["PBCmonthbase"] == null) return;
EWSOutputHelper.ExportPBCMonth((DataSet)Session["PBCmonthbase"]);
}
protected void PBCButton_Click(object sender, EventArgs e)
{
///文本框 关键字匹配
string keyWord = KeyWordTextBox.Text;
string filter = "IndicatorName LIKE '%" + keyWord + "%' or IndicatorID LIKE '%" + keyWord + "%'";
PBCIntegrationManager manager = new PBCIntegrationManager();
List<PBCIndicatorCode> cnnamelist = new List<PBCIndicatorCode>();
cnnamelist = manager.GetCnnameList(filter);

DataTable dt = PBCAnalyzer.GetCnnameList(cnnamelist);
///显示数据
PBCGridView.DataSource = dt;
PBCGridView.DataBind();
PBCGridView.Visible = true;
TypeidGridView.Visible = false;
ImportGridView.Visible = false;
}

//protected void PBCGridView_RowCommand(object sender, GridViewCommandEventArgs e EventArgs e)
//{
//}
protected void GetIDButton_Command(object sender, CommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = PBCGridView.Rows[index]; 
///取出Indicatorid值
string indiID = row.Cells[1].Text;
///通过Indicatorid取出TypeID
string filter = "IndicatorID in ( '" + indiID.ToString() + "' )";
PBCIntegrationManager manager = new PBCIntegrationManager();
DataTable typeid = new DataTable();
typeid = manager.GetOnlyEntityList(filter);
DataTable dt = typeid;
TypeidGridView.DataSource = dt;
TypeidGridView.DataBind();
TypeidGridView.Visible = true;
PBCGridView.Visible = false;
}

protected void GetNameButton_Command(object sender, CommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = TypeidGridView.Rows[index];
//取出IndicatorID和TypeName
string indiID = row.Cells[1].Text.Trim();
string tpName = row.Cells[2].Text.Trim();
//通过TypeName得到TypeID
string filter = "TypeName in ( '" + tpName.ToString() + "' )";
PBCIntegrationManager manager = new PBCIntegrationManager();
DataSet ds = new DataSet();
ds = manager.GetTypeID(filter);
string typeid = ds.Tables[0].Rows[0][0].ToString();
Session["IndicatorID"] = indiID;
Session["TypeID"] = typeid;
}
//private void GetIndicatorData()
//{
// //获取用户输入
// string startDateString = DateRangeControl1.StartDateString;
// string endDateString = DateRangeControl1.EndDateString;
// _indicatorList = IndicatorMultiSelectControl1.SelectedIndicatorList;
// if (_indicatorList == null) return;
// //获取数据
// TimeSequenceDataManager.GetIndicatorTimeSequenceValue(_indicatorList, startDateString, endDateString);
//}
protected void Export_Click(object sender, EventArgs e)
{
//string path = Request.MapPath("~/UploadFiles") + "\\PBCmonth.xml";
string path = Request.MapPath("~/UploadFiles") + "\\数据交换样本数据.xml";
FileUpload.SaveAs(path);
//XmlTextReader reader = null;
//string childstring = null;
DataTable xmlDT = new DataTable();
XmlDocument xmld = new XmlDocument();
xmld.Load(path);
//查找根节点,并将它及它的子节点一同添加到datatable中
XmlNode xnod = xmld.DocumentElement;
DataTable dt = new DataTable();
//向datatable中添加数据
dt.Columns.Add("Node", typeof(System.String));
dt.Columns.Add("NodeName", typeof(System.String));
dt.Columns.Add("NodeValue", typeof(System.String));
try
{
dt = DataImport.AddWithChildren(xnod, 1, ref dt);
}
catch
{
Response.Write("<script language=javascript>");
Response.Write("alert('数据模版出错,无法生成表格!');");
Response.Write("</script>");
return;
}
//DataTable Monthdt = null;
if (dt.Rows.Count == 0)
{
Response.Write("<script language=javascript>");
Response.Write("alert('目前模板中没有数据!');");
Response.Write("</script>");
return;
}

//if (di.MonthData_BuildTableForImport(dt, ref Monthdt) == true)
//{
//databind
ExportGridView.DataSource = dt.DefaultView;
ExportGridView.DataBind();
//Session["PBCmonth"] = dt;
//}
//else
//{
// Response.Write("<script language=javascript>");
// Response.Write("alert('月度数据表中数据出错,无法导入!');");
// Response.Write("</script>");
// return;
//}
////string path = Request.MapPath("~/UploadFiles") + "\\DataExchange.xml";
//XmlTextReader reader = new XmlTextReader(Server.MapPath("DataExchange.xml"));
//reader.WhitespaceHandling = WhitespaceHandling.None;
//XmlDocument xmlDoc = new XmlDocument();
////将文件加载到XmlDocument对象中
//xmlDoc.Load(reader);
////关闭连接
//reader.Close();
////向listbox中添加代表文档的元素
//lbNodes.Items.Add("XML Document");
////查找根节点,并将它及它的子节点一同添加到listbox中
//XmlNode xnod = xmlDoc.DocumentElement;
//AddWithChildren(xnod, 1);
}
//private void AddWithChildren(XmlNode xnod, Int32 intLevel)
//{
// //将节点及它的子节点一同添加到listbox中
// //intLevel 控制缩进的深度
// XmlNode xnodWorking;
// String strIndent = new string(' ', 2 * intLevel);
// //如果节点有值,读取它的值
// string strValue = (string)xnod.Value;
// if (strValue != null)
// {
// strValue = " : " + strValue;
// }
// //将节点的详细信息添加到ListBox中
// lbNodes.Items.Add(strIndent + xnod.Name + strValue);
// //如果是元素节点,获取它的属性
// if (xnod.NodeType == XmlNodeType.Element)
// {
// XmlNamedNodeMap mapAttributes = xnod.Attributes;
// //将节点属性添加到ListBox中
// foreach (XmlNode xnodAttribute in mapAttributes)
// {
// lbNodes.Items.Add(strIndent + " " + xnodAttribute.Name +
// " : " + xnodAttribute.Value);
// }
// //如果还有子节点,就递归地调用这个程序
// if (xnod.HasChildNodes)
// {
// xnodWorking = xnod.FirstChild;
// while (xnodWorking != null)
// {
// AddWithChildren(xnodWorking, intLevel + 1);
// xnodWorking = xnodWorking.NextSibling;
// }
// }
// }
//}
///转到测试页
//protected void ExportXML_Click(object sender, EventArgs e)
//{
// //string xmlstream1 = "F;S;DSDSAFSFASFS"; //错误字符串
// // string xmlstream = "S;S;<?xml version=\"1.0\" encoding=\"GB2312\"?><jinhong xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"DataExchForIndex.xsd\"><index><zbbm>110101000000</zbbm><zbmc>国民总收入</zbmc><zbjs>指一个国家(或地区)所有常住单位在一定时期内收入初次分配的最终结果。</zbjs><flbm>1101</flbm><jldw></jldw><zbld><lddm>01_0007</lddm><zbbm>110101000000</zbbm><zzsj></zzsj><tjkjxh>0</tjkjxh><sjldbj>0</sjldbj></zbld><zbld><lddm>01_0008</lddm><zbbm>110101000000</zbbm><zzsj></zzsj><tjkjxh>0</tjkjxh><sjldbj>0</sjldbj></zbld><zbsx><sxdm>01_0012</sxdm><zbbm>110101000000</zbbm><jldw>亿元</jldw><sjgs></sjgs><sjldbj>1</sjldbj><zzsj></zzsj><zbshxsjmc></zbshxsjmc></zbsx><zbsx><sxdm>01_0020</sxdm><zbbm>110101000000</zbbm><jldw>%</jldw><sjgs></sjgs><sjldbj>1</sjldbj><zzsj></zzsj><zbshxsjmc></zbshxsjmc></zbsx></index></jinhong>";
// string xmlstream = "S;S;<?xml version=\"1.0\" encoding=\"GB2312\"?><jinhong xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"DataExchange.xsd\"><dataset ProvideFrom=\"TJ \"><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1952 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>679.00</bnz><nzzl>null</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1957 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>1069.29</bnz><nzzl>105.05</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1962 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>1151.23</bnz><nzzl>94.38</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1965 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>1717.20</bnz><nzzl>117.03</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1970 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>2261.32</bnz><nzzl>119.40</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1975 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>3013.11</bnz><nzzl>108.69</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1978 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>3645.00</bnz><nzzl>111.70</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1979 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>4063.00</bnz><nzzl>107.60</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1980 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>4546.00</bnz><nzzl>107.80</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1981 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>4889.00</bnz><nzzl>105.20</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1982 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>5330.00</bnz><nzzl>109.20</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1983 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>5986.00</bnz><nzzl>111.10</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1984 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>7244.00</bnz><nzzl>115.30</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1985 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>9041.00</bnz><nzzl>113.20</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1986 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>10274.00</bnz><nzzl>108.50</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1987 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>12051.00</bnz><nzzl>111.50</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1988 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>15037.00</bnz><nzzl>111.30</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1989 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>17001.00</bnz><nzzl>104.20</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1990 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>18718.00</bnz><nzzl>104.10</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1991 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>21826.00</bnz><nzzl>109.10</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1992 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>26937.00</bnz><nzzl>114.10</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1993 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>35260.00</bnz><nzzl>113.70</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1994 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>48108.00</bnz><nzzl>113.10</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1995 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>59811.00</bnz><nzzl>109.30</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1996 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>70142.00</bnz><nzzl>110.20</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1997 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>78061.00</bnz><nzzl>109.60</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1998 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>83024.00</bnz><nzzl>107.30</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>1999 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>88479.00</bnz><nzzl>107.90</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>2000 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>98000.00</bnz><nzzl>108.60</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>2001 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>108068.00</bnz><nzzl>108.10</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>2002 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>119096.00</bnz><nzzl>109.50</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>2003 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>135174.00</bnz><nzzl>110.60</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>2004 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>159587.00</bnz><nzzl>110.40</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>2005 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>184089.00</bnz><nzzl>111.20</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>2006 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>213132.00</bnz><nzzl>111.80</nzzl></zbsx></data><data><zbbm>110101000000</zbbm><sjbb>0</sjbb><gxsj>2008-12-30 14:50:07.0</gxsj><zbld><sj>2007 </sj><xzqh>100000</xzqh></zbld><zbsx><bnz>251481.00</bnz><nzzl>112.20</nzzl></zbsx></data></dataset></jinhong>";

// //取字符串为空判断
// string xmlsub1 = xmlstream.Substring(0, 1);
// //取字符串为链接或整串
// string xmlsub2 = xmlstream.Substring(2, 1);
// //导入数据为空
// if (xmlsub1 == "F" || xmlsub1 == null)
// {
// Response.Write("<script language=javascript>");
// Response.Write("alert('导入数据为空!');");
// Response.Write("</script>");
// return;
// }
// if (xmlsub1 == "S")
// {
// if (xmlsub2 == "S")
// {
// string xmlRealStream = xmlstream.Substring(4, xmlstream.Length-4);
// XmlDocument doc = new XmlDocument();
// doc.LoadXml(xmlRealStream);
// //将其转存本地
// doc.Save("C:\\stream.xml");
// Response.Write("<script language=javascript>");
// Response.Write("alert('导入数据成功!');");
// Response.Write("</script>");
// return;

// }
// }
//}
}
DataImpoter.cs
using System;
using System.IO;
using System.Data;
using System.Data.OleDb;
using DataAccess.DAO;
using DataAccess.PO;
using System.Collections.Generic;
using System.Text;
using BusinessFacade;
using System.Xml;
using System.Resources;
using System.Reflection;
/// <summary>
/// DataImport 的摘要说明。
/// </summary>
public class DataImport
{

public DataImport()
{
}
public DataTable MonthData_BuildStruct()
{
DataTable workTable = new DataTable("MonthData");
workTable.Columns.Add("YearNo", typeof(String));
workTable.Columns.Add("MonthNo", typeof(String));
workTable.Columns.Add("IndicatorID", typeof(String));
workTable.Columns.Add("IndicatorName", typeof(String));
workTable.Columns.Add("IndicatorMemo", typeof(String));
workTable.Columns.Add("TypeName", typeof(String));
workTable.Columns.Add("TypeID", typeof(String));
workTable.Columns.Add("ProviderName", typeof(String));
workTable.Columns.Add("ProviderID", typeof(String));
workTable.Columns.Add("IndicatorValue", typeof(string));
workTable.Columns.Add("IsExistData", typeof(string));
return workTable;
}
public DataTable QuarterData_BuildStruct()
{
DataTable workTable = new DataTable("QuarterData");
workTable.Columns.Add("YearNo", typeof(String));
workTable.Columns.Add("QuarterNo", typeof(String));
workTable.Columns.Add("IndicatorID", typeof(String));
workTable.Columns.Add("IndicatorName", typeof(String));
workTable.Columns.Add("IndicatorMemo", typeof(String));
workTable.Columns.Add("TypeName", typeof(String));
workTable.Columns.Add("TypeID", typeof(String));
workTable.Columns.Add("ProviderName", typeof(String));
workTable.Columns.Add("ProviderID", typeof(String));
workTable.Columns.Add("IndicatorValue", typeof(string));
workTable.Columns.Add("IsExistData", typeof(string));
return workTable;
}
public DataTable YearData_BuildStruct()
{
DataTable workTable = new DataTable("YearData");
workTable.Columns.Add("YearNo", typeof(String));
workTable.Columns.Add("IndicatorID", typeof(String));
workTable.Columns.Add("IndicatorName", typeof(String));
workTable.Columns.Add("IndicatorMemo", typeof(String));
workTable.Columns.Add("TypeName", typeof(String));
workTable.Columns.Add("TypeID", typeof(String));
workTable.Columns.Add("ProviderName", typeof(String));
workTable.Columns.Add("ProviderID", typeof(String));
workTable.Columns.Add("IndicatorValue", typeof(string));
workTable.Columns.Add("IsExistData", typeof(string));
return workTable;
}
public DataTable MonthData_BuildTable(DataTable dt, string year, string month, string TypeName, string TypeID,
string ProviderName, string ProviderID)
{
int rowcount = dt.Rows.Count;
DataTable newdt = MonthData_BuildStruct();
int i;
for (i = 0; i < rowcount; i++)
{
DataRow dr = newdt.NewRow();
dr["YearNo"] = year;
dr["MonthNo"] = month;
dr["TypeName"] = TypeName;
dr["TypeID"] = TypeID;
dr["ProviderName"] = ProviderName;
dr["ProviderID"] = ProviderID;
dr["IndicatorID"] = dt.Rows[i][0];
dr["IndicatorValue"] = dt.Rows[i][2];
newdt.Rows.Add(dr);
}
newdt.AcceptChanges();
return newdt;
}
public bool MonthData_BuildTableForImport(DataTable dt, string year, string month, ref DataTable resdt)
{
//得到当前的提供者名称
string providerid = dt.Rows[0][10].ToString();
ProviderInfoManager prov = new ProviderInfoManager();
string providername = prov.ProviderNameByCode(providerid);
if (providername == "")
{
return false;
}
int rowcount = dt.Rows.Count;
int columncount = dt.Columns.Count;
resdt = MonthData_BuildStruct();
int i;
int j;
DataRow dr;
DataImport di = new DataImport();
for (i = 0; i < rowcount; i++)
{
if (dt.Rows[i][0].ToString() == null || dt.Rows[i][0].ToString().Trim() == "")
continue;
for (j = 0; j < columncount; j++)
{
string columnname = dt.Columns[j].ColumnName;
if (IsExistDataType(columnname))
{
string typeID = GetDataTypeIDbyDataTypeName(columnname);
dr = resdt.NewRow();
dr["YearNo"] = year;
dr["MonthNo"] = month;
dr["TypeName"] = columnname;
dr["TypeID"] = typeID;
dr["ProviderName"] = providername;
dr["ProviderID"] = providerid;
dr["IndicatorID"] = dt.Rows[i][0];
dr["IndicatorName"] = dt.Rows[i][1];
dr["IndicatorMemo"] = dt.Rows[i][2];
dr["IndicatorValue"] = dt.Rows[i][j];
if (dr["IndicatorValue"].ToString().Trim() != "")
{
IsExistMonthRow(ref dr);
resdt.Rows.Add(dr);
}
}
}
}
//get memo
GetIndicatorMemo(ref resdt);
resdt.AcceptChanges();
return true;
}


private void GetIndicatorMemo(ref DataTable dt)
{
int count = dt.Rows.Count;
if (count == 0)
{
return;
}
int i;
string IndicatorID;
IndicatorBasicInfoManager inc = new IndicatorBasicInfoManager();
for (i = 0; i < count; i++)
{
IndicatorID = dt.Rows[i]["IndicatorID"].ToString();
dt.Rows[i]["IndicatorMemo"] = inc.GetIndicatorMemobyID(IndicatorID);
}
}
public bool MonthData_BuildTableForImport(DataTable dt, ref DataTable resdt)
{

//得到当前的提供者名称
string providerid = dt.Rows[0][11].ToString();
ProviderInfoManager prov = new ProviderInfoManager();
string providername = prov.ProviderNameByCode(providerid);
if (providername == "")
{
return false;
}
int rowcount = dt.Rows.Count;
int columncount = dt.Columns.Count;
resdt = MonthData_BuildStruct();
int i;
int j;
DataRow dr;
for (i = 0; i < rowcount; i++)
{
if (dt.Rows[i][0].ToString() == null || dt.Rows[i][0].ToString().Trim() == "")
continue;
string CreateTime = dt.Rows[i][3].ToString();
char[] ch;
ch = new char[1];
ch[0] = '-';
string[] arr = CreateTime.Split(ch);
string YearNo = arr[0];
string MonthNo = arr[1];
for (j = 0; j < columncount; j++)
{
string columnname = dt.Columns[j].ColumnName;
if (IsExistDataType(columnname))
{
string typeID = GetDataTypeIDbyDataTypeName(columnname);
dr = resdt.NewRow();
dr["YearNo"] = YearNo;
dr["MonthNo"] = MonthNo;
dr["TypeName"] = columnname;
dr["TypeID"] = typeID;
dr["ProviderName"] = providername;
dr["ProviderID"] = providerid;
dr["IndicatorID"] = dt.Rows[i][0];
dr["IndicatorName"] = dt.Rows[i][1];
dr["IndicatorMemo"] = dt.Rows[i][2];
dr["IndicatorValue"] = dt.Rows[i][j];
if (dr["IndicatorValue"].ToString().Trim() != "")
{
IsExistMonthRow(ref dr);
resdt.Rows.Add(dr);
}
}
}
}
//get memo
GetIndicatorMemo(ref resdt);
resdt.AcceptChanges();
return true;
}


public bool QuarterData_BuildTableForImport(DataTable dt, string year, string month, ref DataTable resdt)
{
//得到当前的提供者名称
string providerid = dt.Rows[0][10].ToString();
ProviderInfoManager prov = new ProviderInfoManager();

string providername = prov.ProviderNameByCode(providerid);
if (providername == "")
{
return false;
}
int rowcount = dt.Rows.Count;
int columncount = dt.Columns.Count;
resdt = QuarterData_BuildStruct();
int i;
int j;
DataRow dr;
for (i = 1; i < rowcount; i++)
{
for (i = 0; i < rowcount; i++)
{
if (dt.Rows[i][0].ToString() == null || dt.Rows[i][0].ToString().Trim() == "")
continue;
for (j = 0; j < columncount; j++)
{
string columnname = dt.Columns[j].ColumnName;
if (IsExistDataType(columnname))
{
string typeID = GetDataTypeIDbyDataTypeName(columnname);
dr = resdt.NewRow();
dr["YearNo"] = year;
dr["QuarterNo"] = month;
dr["TypeName"] = columnname;
dr["TypeID"] = typeID;
dr["ProviderName"] = providername;
dr["ProviderID"] = providerid;
dr["IndicatorID"] = dt.Rows[i][0];
dr["IndicatorName"] = dt.Rows[i][1];
dr["IndicatorMemo"] = dt.Rows[i][2];
dr["IndicatorValue"] = dt.Rows[i][j];
if (dr["IndicatorValue"].ToString().Trim() != "")
{
IsExistQuarterRow(ref dr);
resdt.Rows.Add(dr);
}
}
}
}
}
//get memo
GetIndicatorMemo(ref resdt);
resdt.AcceptChanges();
return true;
}
public bool QuarterData_BuildTableForImport(DataTable dt, ref DataTable resdt)
{
//得到当前的提供者名称
string providerid = dt.Rows[0][11].ToString();
ProviderInfoManager prov = new ProviderInfoManager();

string providername = prov.ProviderNameByCode(providerid);
if (providername == "")
{
return false;
}
int rowcount = dt.Rows.Count;
int columncount = dt.Columns.Count;
resdt = QuarterData_BuildStruct();
int i;
int j;
DataRow dr;
for (i = 0; i < rowcount; i++)
{
if (dt.Rows[i][0].ToString() == null || dt.Rows[i][0].ToString().Trim() == "")
continue;
string CreateTime = dt.Rows[i][3].ToString();
char[] ch;
ch = new char[1];
ch[0] = '-';
string[] arr = CreateTime.Split(ch);
string YearNo = arr[0];
string QuarterNo = arr[1];
//fix bug by shangwei @20081109
////for (i = 0; i < rowcount; i++)
////{
//// if (dt.Rows[i][0].ToString() == null || dt.Rows[i][0].ToString().Trim() == "")
//// continue;
for (j = 0; j < columncount; j++)
{
string columnname = dt.Columns[j].ColumnName;
if (IsExistDataType(columnname))
{
string typeID = GetDataTypeIDbyDataTypeName(columnname);
dr = resdt.NewRow();
dr["YearNo"] = YearNo;
dr["QuarterNo"] = QuarterNo;
dr["TypeName"] = columnname;
dr["TypeID"] = typeID;
dr["ProviderName"] = providername;
dr["ProviderID"] = providerid;
dr["IndicatorID"] = dt.Rows[i][0];
dr["IndicatorName"] = dt.Rows[i][1];
dr["IndicatorMemo"] = dt.Rows[i][2];
dr["IndicatorValue"] = dt.Rows[i][j];
if (dr["IndicatorValue"].ToString().Trim() != "")
{
IsExistQuarterRow(ref dr);
resdt.Rows.Add(dr);
}
}
}
////}
}
//get memo
GetIndicatorMemo(ref resdt);
resdt.AcceptChanges();
return true;
}
/// <summary>
/// 截面数据导入
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public DataTable BuildMonthTableJM(string filename)
{
return BuildTableFromExcelFile(filename, "[月度面板模板$]");
}

/// <summary>
/// 将要导入的excel数据转换为datatable
/// </summary>
/// <param name="filename"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
public static DataTable BuildTableFromExcelFile(string filename, string sheetName)
{
OleDbConnection MyConnection;
OleDbDataAdapter MyCommand;
MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; " +
"data source=" + filename + "; " + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"");
//MyCommand = new OleDbDataAdapter("select name from sysobjects where xtype='u'", MyConnection);
//DataSet ds = new DataSet();
//MyCommand.Fill(ds);
MyCommand = new OleDbDataAdapter("select * from " + sheetName, MyConnection);
DataSet ds = new DataSet();
MyCommand.Fill(ds);
MyConnection.Close();
File.Delete(filename);
DataTable dt = ds.Tables[0];
foreach (DataRow row in dt.Rows)
{//日期转换 hardcode
string cellStr1 = row[0] as string;
string cellStr2 = row[4] as string;
DateTime time1;
DateTime time2;
if (cellStr1 != null && DateTime.TryParse(cellStr1, out time1))
row[0] = time1.ToString("yyyy-MM");
if (cellStr2 != null && DateTime.TryParse(cellStr2, out time2))
row[4] = time2.ToString("yyyy-MM");
}
return dt;
}
/// <summary>
/// 将要导入的xml数据转换为datatable
/// </summary>
/// <param name="filename"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
//public DataTable BuildTableFromXmlFile(string path)
//{
// //DataSet ds = DataImport.ConvertXMLFileToDataSet(path);
// //DataTable dt = ds.Tables[0];
// DataTable dt = DataImport.AddWithChildren(xnod, 1);
// ////过滤重复数据
// //DataView myDataView = new DataView(dt);
// //string[] strComuns ={ "IndicatorID", "TypeID" };
// //dt = myDataView.ToTable(true, strComuns);
// return dt;
//}
/// <summary>
/// 时序数据导入
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public DataTable BuildMonthTableSX(string filename)
{
return BuildTableFromExcelFile(filename, "[月度时序模板$]");
}
/// <summary>
/// 时序数据导入
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public DataTable BuildQuarterTableSX(string filename)
{
return BuildTableFromExcelFile(filename, "[季度时序模板$]");
}
/// <summary>
/// 截面数据导入
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public DataTable BuildQuarterTableJM(string filename)
{
return BuildTableFromExcelFile(filename, "[季度面板模板$]");
}
/// <summary>
/// 截面数据导入
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public DataTable BuildYearTableJM(string filename)
{
return BuildTableFromExcelFile(filename, "[年度面板模板$]");
// ds.Tables[0].AcceptChanges();
}
/// <summary>
/// 时序数据导入
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public DataTable BuildYearTableSX(string filename)
{
return BuildTableFromExcelFile(filename, "[年度时序模板$]");
}
/// <summary>
/// 时序数据导入
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public DataTable BuildDummyTableSX(string filename)
{
return BuildTableFromExcelFile(filename, "[哑变量数据$]");
}
/// <summary>
///
/// </summary>
/// <param name="dt"></param>
/// <param name="resdt"></param>
/// <returns></returns>
public bool YearData_BuildTableForImport(DataTable dt, ref DataTable resdt)
{
//得到当前的提供者名称
string providerid = dt.Rows[0][11].ToString();
ProviderInfoManager prov = new ProviderInfoManager();

string providername = prov.ProviderNameByCode(providerid);
if (providername == "")
{
return false;
}
int rowcount = dt.Rows.Count;
int columncount = dt.Columns.Count;
resdt = YearData_BuildStruct();
int i;
int j;
DataRow dr;
for (i = 0; i < rowcount; i++)
{
if (dt.Rows[i][0].ToString() == null || dt.Rows[i][0].ToString().Trim() == "")
continue;
string year = dt.Rows[i][3].ToString();
for (j = 4; j < columncount; j++)
{
string columnname = dt.Columns[j].ColumnName;
if (IsExistDataType(columnname))
{
string typeID = GetDataTypeIDbyDataTypeName(columnname);
dr = resdt.NewRow();
dr["YearNo"] = year;
dr["TypeName"] = columnname;
dr["TypeID"] = typeID;
dr["ProviderName"] = providername;
dr["ProviderID"] = providerid;
dr["IndicatorID"] = dt.Rows[i][0];
dr["IndicatorName"] = dt.Rows[i][1];
dr["IndicatorMemo"] = dt.Rows[i][2];
dr["IndicatorValue"] = dt.Rows[i][j];
double valueDouble;
if (double.TryParse( dr["IndicatorValue"].ToString(),out valueDouble))
{
IsExistYearRow(ref dr);
resdt.Rows.Add(dr);
}
}
}
}
//get memo
GetIndicatorMemo(ref resdt);
resdt.AcceptChanges();
return true;
}
public bool YearData_BuildTableForImport(DataTable dt, string year, ref DataTable resdt)
{
//得到当前的提供者名称
string providerid = dt.Rows[0][10].ToString();
ProviderInfoManager prov = new ProviderInfoManager();

string providername = prov.ProviderNameByCode(providerid);
if (providername == "")
{
return false;
}
int rowcount = dt.Rows.Count;
int columncount = dt.Columns.Count;
resdt = YearData_BuildStruct();
int i;
int j;
DataRow dr;
for (i = 1; i < rowcount; i++)
{
if (dt.Rows[i][0].ToString() == null || dt.Rows[i][0].ToString().Trim() == "")
continue;
for (j = 0; j < columncount; j++)
{
string columnname = dt.Columns[j].ColumnName;
if (IsExistDataType(columnname))
{
string typeID = GetDataTypeIDbyDataTypeName(columnname);
dr = resdt.NewRow();
dr["YearNo"] = year;
dr["TypeName"] = columnname;
dr["TypeID"] = typeID;
dr["ProviderName"] = providername;
dr["ProviderID"] = providerid;
dr["IndicatorID"] = dt.Rows[i][0];
dr["IndicatorName"] = dt.Rows[i][1];
dr["IndicatorMemo"] = dt.Rows[i][2];
dr["IndicatorValue"] = dt.Rows[i][j];
if (dr["IndicatorValue"].ToString().Trim() != "")
{
IsExistYearRow(ref dr);
resdt.Rows.Add(dr);
}
}
}
}
//get memo
GetIndicatorMemo(ref resdt);
resdt.AcceptChanges();
return true;
}

protected bool IsExistMonthRow(ref DataRow dr)
{
string YearNo = dr["YearNo"].ToString();
string MonthNo = dr["MonthNo"].ToString();
string TypeID = dr["TypeID"].ToString();
string ProviderID = dr["ProviderID"].ToString();
string IndicatorID = dr["IndicatorID"].ToString();
string DateString = YearNo + "-" + MonthNo;
IndicatorBasicInfoManager basic = new IndicatorBasicInfoManager();
string IndicatorUID = basic.GetIndicatorUIDByID(IndicatorID);
//IndicatorMonthBaseManager bll = new IndicatorMonthBaseManager();
int tmp;
if ((int.TryParse(IndicatorUID, out tmp) &&
TimeSequenceDataManager.Exists(DateString, IndicatorUID, TypeID, TimeSequence.MONTH_BASED))
|| (int.TryParse(IndicatorID, out tmp) &&
TimeSequenceDataManager.Exists(DateString, IndicatorID, TypeID, TimeSequence.MONTH_BASED)))
{
{
dr["IsExistData"] = "重复";
return true;
}
}
return false;
}
protected bool IsExistQuarterRow(ref DataRow dr)
{
string YearNo = dr["YearNo"].ToString();
string QuarterNo = dr["QuarterNo"].ToString();
string TypeID = dr["TypeID"].ToString();
string ProviderID = dr["ProviderID"].ToString();
string IndicatorID = dr["IndicatorID"].ToString();
string DateString = YearNo + "-" + QuarterNo;
IndicatorBasicInfoManager basic = new IndicatorBasicInfoManager();
string IndicatorUID = basic.GetIndicatorUIDByID(IndicatorID);
//IndicatorQuarterBaseManager bll = new IndicatorQuarterBaseManager();
int tmp;
if ((int.TryParse(IndicatorUID, out tmp) &&
TimeSequenceDataManager.Exists(DateString, IndicatorUID, TypeID, TimeSequence.QUARTER_BASED))
|| (int.TryParse(IndicatorID, out tmp) &&
TimeSequenceDataManager.Exists(DateString, IndicatorID, TypeID, TimeSequence.QUARTER_BASED)))
{
{
dr["IsExistData"] = "重复";
return true;
}
}

return false;
}
protected bool IsExistYearRow(ref DataRow dr)
{
string YearNo = dr["YearNo"].ToString();
string TypeID = dr["TypeID"].ToString();
string ProviderID = dr["ProviderID"].ToString();
string IndicatorID = dr["IndicatorID"].ToString();
string DateString = YearNo;
IndicatorBasicInfoManager basic = new IndicatorBasicInfoManager();
string IndicatorUID = basic.GetIndicatorUIDByID(IndicatorID);
//IndicatorYearBaseManager bll = new IndicatorYearBaseManager();
int tmp;
if ((int.TryParse(IndicatorUID, out tmp) &&
TimeSequenceDataManager.Exists(DateString, IndicatorUID, TypeID, TimeSequence.YEAR_BASED))
|| (int.TryParse(IndicatorID, out tmp) &&
TimeSequenceDataManager.Exists(DateString, IndicatorID, TypeID, TimeSequence.YEAR_BASED)))
{
{
dr["IsExistData"] = "重复";
return true;
}
}
return false;
}

protected bool IsExistDataType(string columnname)
{
IndicatorDataTypeManager basic = new IndicatorDataTypeManager();
return basic.IfExists(columnname);
}
protected string GetDataTypeIDbyDataTypeName(string columnname)
{
IndicatorDataTypeManager basic = new IndicatorDataTypeManager();
return basic.GetDataTypeIDbyDataTypeName(columnname);
}
public DataSet GetDataType()
{
IndicatorDataTypeManager basic = new IndicatorDataTypeManager();
return basic.GetAll();
}

public void DataDownload(int dataType, string wsname, string filename)
{
switch (dataType)
{
case 1:
MBData(wsname, filename);
break;
case 2:
SXData(wsname, filename);
break;
case 3:
IndiBasicData(wsname, filename);
break;
}
}
public void SXData(string wsname, string filename)
{
DataImport di = new DataImport();
DataSet ds = di.GetDataType();
int dataTypeCount = ds.Tables[0].Rows.Count;
Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
oExcel.UserControl = false;
Excel.WorkbookClass wb = (Excel.WorkbookClass)oExcel.Workbooks.Add(System.Reflection.Missing.Value);
Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];
ws.Name = wsname;
oExcel.Cells[1, 1] = "'指标代码";
oExcel.Cells[1, 2] = "'指标名称";
oExcel.Cells[1, 3] = "'单位";
oExcel.Cells[1, 4] = "'时间";
int i;
for (i = 5; i < dataTypeCount + 5; i++)
{
oExcel.Cells[1, i] = ds.Tables[0].Rows[i - 5][1].ToString();
}
oExcel.Cells[1, i] = "'数据提供者";
wb.Saved = true;
string filenames = EWSFilePathHelper.GetOutputLocalPath() + filename;
oExcel.ActiveWorkbook.SaveCopyAs(filenames);
oExcel.Quit();
System.GC.Collect();
EWSOutputHelper.DownloadFile(EWSFilePathHelper.GetOutputLocalPath() + filename);
}
public void MBData(string wsname, string filename)
{
DataSet ds = GetDataType();
int dataTypeCount = ds.Tables[0].Rows.Count;
Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
oExcel.UserControl = false;
Excel.WorkbookClass wb = (Excel.WorkbookClass)oExcel.Workbooks.Add(System.Reflection.Missing.Value);
Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];
ws.Name = wsname;
oExcel.Cells[1, 1] = "'指标代码";
oExcel.Cells[1, 2] = "'指标名称";
oExcel.Cells[1, 3] = "'单位";
int i;
for (i = 4; i < dataTypeCount + 4; i++)
{
oExcel.Cells[1, i] = ds.Tables[0].Rows[i - 4][1].ToString();
}
oExcel.Cells[1, i] = "'数据提供者";
wb.Saved = true;
string filenames = EWSFilePathHelper.GetOutputLocalPath() + filename;
oExcel.ActiveWorkbook.SaveCopyAs(filenames);
oExcel.Quit();
System.GC.Collect();
EWSOutputHelper.DownloadFile(EWSFilePathHelper.GetOutputLocalPath() + filename);
}
//ADDED BY FENGGH

public DataTable BasicData_BuildStruct()
{
DataTable workTable = new DataTable("BasicData");
workTable.Columns.Add("IndicatorCode", typeof(String));
workTable.Columns.Add("IndicatorCnName", typeof(String));
workTable.Columns.Add("IndicatorEnName", typeof(String));
workTable.Columns.Add("IndicatorMemo", typeof(String));
workTable.Columns.Add("IsMonthBased", typeof(String));
workTable.Columns.Add("IsQuarterBased", typeof(String));
workTable.Columns.Add("IsYearBased", typeof(String));
workTable.Columns.Add("IsComplexIndicator", typeof(String));
workTable.Columns.Add("IndicatorGroupID", typeof(String));
workTable.Columns.Add("DepartmentID", typeof(String));
return workTable;
}
public DataTable BuildIndiBaseDataTable(string filename)
{
return BuildTableFromExcelFile(filename, "[指标数据模板$]");
}
public bool BasicData_BuildTableForImport(DataTable dt, ref DataTable resdt)
{
int rowcount = dt.Rows.Count;
int columncount = dt.Columns.Count;
resdt = BasicData_BuildStruct();
int i;
int j;
DataRow dr;
for (i = 0; i < rowcount; i++)
{
dr = resdt.NewRow();
dr["IndicatorCode"] = dt.Rows[i][0];
dr["IndicatorCnName"] = dt.Rows[i][1];
dr["IndicatorEnName"] = dt.Rows[i][2];
dr["IndicatorMemo"] = dt.Rows[i][3];
dr["isMonthBased"] = dt.Rows[i][4];
dr["isQuarterBased"] = dt.Rows[i][5];
dr["isYearBased"] = dt.Rows[i][6];
dr["isComplexIndicator"] = dt.Rows[i][7];
dr["IndicatorGroupID"] = dt.Rows[i][8];
dr["DepartmentID"] = dt.Rows[i][9];
resdt.Rows.Add(dr);
}
resdt.AcceptChanges();
return true;
}
public void IndiBasicData(string wsname, string filename)
{
DataImport di = new DataImport();
Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
oExcel.UserControl = false;
Excel.WorkbookClass wb = (Excel.WorkbookClass)oExcel.Workbooks.Add(System.Reflection.Missing.Value);
Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];
ws.Name = wsname;
oExcel.Cells[1, 1] = "指标代码";
oExcel.Cells[1, 2] = "中文名称";
oExcel.Cells[1, 3] = "英文名称";
oExcel.Cells[1, 4] = "备注";
oExcel.Cells[1, 5] = "是否月度数据";
oExcel.Cells[1, 6] = "是否季度数据";
oExcel.Cells[1, 7] = "是否年度数据";
oExcel.Cells[1, 8] = "是否复合指数";
oExcel.Cells[1, 9] = "指标类别ID";
oExcel.Cells[1, 10] = "所属部门ID";
wb.Saved = true;
string filenames = EWSFilePathHelper.GetOutputLocalPath() + filename;
oExcel.ActiveWorkbook.SaveCopyAs(filenames);
oExcel.Quit();
System.GC.Collect();
EWSOutputHelper.DownloadFile(EWSFilePathHelper.GetOutputLocalPath() + filename);
}
//added by shangwei
//DataTable previewDT = new DataTable();
/// <summary>
///
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public DataTable Build_CEICRawDataTable(string filename, string sheetName)
{
return BuildTableFromExcelFile(filename, "[" + sheetName + "$]");
}

/// <summary>
/// mappingDT 里面 CEIC指标的顺序与rawDT中列顺序一致
/// </summary>
/// <param name="rawDT"></param>
/// <param name="mappingDT"></param>
/// <param name="frequency"></param>
/// <returns></returns>
public DataTable Build_CEICDataImportPreviewDtTable(DataTable rawDT, DataTable mappingDT, string frequency)
{
if (rawDT == null || mappingDT == null) return new DataTable();
DataTable previewDT;
if (frequency == TimeSequence.MONTH_BASED)
previewDT = MonthData_BuildStruct();
else if (frequency == TimeSequence.QUARTER_BASED)
previewDT = QuarterData_BuildStruct();
else
previewDT = YearData_BuildStruct();
//////workTable.Columns.Add("YearNo", typeof(String));
//////workTable.Columns.Add("MonthNo", typeof(String));
//////workTable.Columns.Add("IndicatorID", typeof(String));
//////workTable.Columns.Add("IndicatorName", typeof(String));
//////workTable.Columns.Add("IndicatorMemo", typeof(String));
//////workTable.Columns.Add("TypeName", typeof(String));
//////workTable.Columns.Add("TypeID", typeof(String));
//////workTable.Columns.Add("ProviderName", typeof(String));
//////workTable.Columns.Add("ProviderID", typeof(String));
//////workTable.Columns.Add("IndicatorValue", typeof(string));
//////workTable.Columns.Add("IsExistData", typeof(string));

int indicatorCount = mappingDT.Rows.Count;
foreach (DataRow rawdataRow in rawDT.Rows)
{
DateTime date;
if (!DateTime.TryParse(rawdataRow[0] as string, out date))
continue;//非数据行的第一个单元格不是日期类型的
//mappingDT struct:
////mappingTable.Columns.Add("CEIC_Code");
////mappingTable.Columns.Add("CEIC_Name");
////mappingTable.Columns.Add("IndicatorID");
////mappingTable.Columns.Add("IndicatorDataTypeID");
//string DataType = Session["dataType"] as string;
foreach (DataRow mappingRow in mappingDT.Rows)
{
string valueString = rawdataRow[mappingDT.Rows.IndexOf(mappingRow) + 1] as string;
double d;
if (valueString == null || valueString.Trim() == "" || !double.TryParse(valueString, out d)) continue;// 如果没有值,就不显示在预览里面
List<string> dataStrList = new List<string>();
string monthStr = date.ToString("MM");
dataStrList.Add(date.ToString("yyyy"));//YearNo
if (frequency == TimeSequence.MONTH_BASED)
dataStrList.Add(monthStr);//MonthNo
else if (frequency == TimeSequence.QUARTER_BASED)
{ //QuarterNo.
if (monthStr.Equals("03"))
dataStrList.Add("01");
else if (monthStr.Equals("06"))
dataStrList.Add("02");
else if (monthStr.Equals("09"))
dataStrList.Add("03");
else if (monthStr.Equals("12"))
dataStrList.Add("04");
else
continue;//日期非法
}
else if (frequency != TimeSequence.YEAR_BASED)
continue;//日期非法

long indicatorID;
int indicatorDataTypeID;
if (!long.TryParse(mappingRow[2] as string, out indicatorID) || !int.TryParse(mappingRow[3] as string, out indicatorDataTypeID))
continue;//mapping里面没有指标ID和数据类型ID对应的情况下,不添加previewDT并继续下一指标

IndicatorBasicInfo indicatorModel = IndicatorBasicInfoManager.GetModel(indicatorID);
IndicatorDataTypes indicatorDataTypeModel = (new IndicatorDataTypeManager()).GetModel(indicatorDataTypeID);
if (indicatorModel == null || indicatorDataTypeModel == null) continue;
dataStrList.Add(indicatorID.ToString());//IndicatorID
dataStrList.Add(indicatorModel.IndicatorCnName);//IndicatorName
dataStrList.Add(indicatorModel.IndicatorMemo);//IndicatorName
dataStrList.Add(indicatorDataTypeModel.DataTypeDisplayName);//IndicatorTypeName
dataStrList.Add(indicatorDataTypeID.ToString());//TypeID
dataStrList.Add("CEIC");//ProviderName
dataStrList.Add("1");//ProviderID HardCode
dataStrList.Add(valueString);
dataStrList.Add("");//IfExistData
previewDT.Rows.Add(dataStrList.ToArray());
DataRow row = previewDT.Rows[previewDT.Rows.Count - 1] as DataRow;
if (frequency == TimeSequence.MONTH_BASED)
IsExistMonthRow(ref row);
else if (frequency == TimeSequence.QUARTER_BASED)
IsExistQuarterRow(ref row);
else
IsExistYearRow(ref row);
}
}
return previewDT;
}
/// <summary>
/// 取PBC指标值
/// </summary>
/// <param name="rawDT"></param>
/// <param name="mappingDT"></param>
/// <param name="frequency"></param>
/// <returns></returns>
public DataTable Build_PBCDataImportPreviewDtTable(DataTable rawDT, DataTable mappingDT, string frequency)
{
if (rawDT == null || mappingDT == null) return new DataTable();
DataTable previewDT;
if (frequency == TimeSequence.MONTH_BASED)
previewDT = MonthData_BuildStruct();
else if (frequency == TimeSequence.QUARTER_BASED)
previewDT = QuarterData_BuildStruct();
else
previewDT = YearData_BuildStruct();

int indicatorCount = mappingDT.Rows.Count;
foreach (DataRow rawdataRow in rawDT.Rows)
{
foreach (DataRow mappingRow in mappingDT.Rows)
{
long indicatorID;
int indicatorDataTypeID;
//mapping里面有指标ID及数据类型ID对应的情况下,才添加previewDT
if (long.TryParse(mappingRow[2] as string, out indicatorID) && int.TryParse(mappingRow[3] as string, out indicatorDataTypeID))
{
string yearStr = ((int)rawdataRow[1]).ToString();
string monthStr = ((int)rawdataRow[2]).ToString();
string PBC_IndiID = rawdataRow[3] as string;
string PBC_TypeID = ((int)rawdataRow[4]).ToString();
string ProvideID = ((int)rawdataRow[5]).ToString();
string valueString = ((double)rawdataRow[6]).ToString();
string Code = mappingRow[0] as string;
string PBC_Code = PBC_IndiID + ":" + PBC_TypeID;
//只有mapping里面的指标ID及数据类型ID与PBC的对应上,才添加previewDT
if (Code == PBC_Code)
{
if (int.Parse(monthStr) < 10)
{
monthStr = "0" + monthStr;
}
if (valueString == null || valueString.Trim() == "") continue;// 如果没有值,就不显示在预览里面
List<string> dataStrList = new List<string>();
dataStrList.Add(yearStr.ToString());//YearNo
if (frequency == TimeSequence.MONTH_BASED)
dataStrList.Add(monthStr.ToString());//MonthNo
else if (frequency == TimeSequence.QUARTER_BASED)
{ //QuarterNo.
if (monthStr.Equals("03"))
dataStrList.Add("01");
else if (monthStr.Equals("06"))
dataStrList.Add("02");
else if (monthStr.Equals("09"))
dataStrList.Add("03");
else if (monthStr.Equals("12"))
dataStrList.Add("04");
else
continue;//日期非法
}
else if (frequency != TimeSequence.YEAR_BASED)
continue;//日期非法

IndicatorBasicInfo indicatorModel = IndicatorBasicInfoManager.GetModel(indicatorID);
IndicatorDataTypes indicatorDataTypeModel = (new IndicatorDataTypeManager()).GetModel(indicatorDataTypeID);
if (indicatorModel == null || indicatorDataTypeModel == null) continue;
dataStrList.Add(indicatorID.ToString());//IndicatorID
dataStrList.Add(indicatorModel.IndicatorCnName);//IndicatorName
dataStrList.Add(indicatorModel.IndicatorMemo);//IndicatorName
dataStrList.Add(indicatorDataTypeModel.DataTypeDisplayName);//IndicatorTypeName
dataStrList.Add(indicatorDataTypeID.ToString());//TypeID
dataStrList.Add("PBC");//ProviderName
dataStrList.Add(ProvideID);
dataStrList.Add(valueString);
dataStrList.Add("");//IfExistData
previewDT.Rows.Add(dataStrList.ToArray());
DataRow row = previewDT.Rows[previewDT.Rows.Count - 1] as DataRow;
if (frequency == TimeSequence.MONTH_BASED)
IsExistMonthRow(ref row);
else if (frequency == TimeSequence.QUARTER_BASED)
IsExistQuarterRow(ref row);
else
IsExistYearRow(ref row);
}
else
continue;
}
}
}
return previewDT;
}

/// <summary>
/// 将XML转DataTable
/// </summary>
/// <param name="xmlData"></param>
/// <returns></returns>
//public static DataTable ConvertXMLFileToDataTable(string xmlFile)
//{
// //StringReader stream = null;
// XmlTextReader reader = null;
// string childstring = null;
// DataTable xmlDT = new DataTable();
//try
//{
// XmlDocument xmld = new XmlDocument();
// xmld.Load(xmlFile);
//查找根节点,并将它及它的子节点一同添加到datatable中
//XmlDocument xmlDoc = new XmlDocument();
//XmlNode xnod = xmlDoc.DocumentElement;
//DataTable dt = new DataTable();
//dt = AddWithChildren(xnod, 1);
////从stream装载到XmlTextReader
//stream = new StringReader(xmld.InnerText);
//reader = new XmlTextReader(stream);
//xmlDS.ReadXml(reader);
//}
//catch (System.Exception ex)
//{
// throw ex;
//}
//finally
//{
// if (reader != null)
// reader.Close();
//}
//return dt;
//}
//}
/// <summary>
/// 遍历XML子节点到Datatable
/// </summary>
/// <param name="xnod"></param>
/// <param name="intLevel"></param>
/// <returns></returns>
public static DataTable AddWithChildren(XmlNode xnod, Int32 intLevel,ref DataTable xmlDT)
{
//将节点及它的子节点一同添加到datatable中
//intLevel 控制缩进的深度
XmlNode xnodWorking;
String strIndent = new string(' ', 2 * intLevel);
//如果节点有值,读取它的值
string strValue = (string)xnod.Value;
if (strValue != null)
{
strValue = " : " + strValue;
}
//将节点的详细信息添加到Datatable中
//xmlDT.Columns.Add(strIndent + xnod.Name + strValue);
//如果是元素节点,获取它的属性
if (xnod is XmlElement)
{
//得到该节点的子节点
XmlElement element = (XmlElement)xnod;
XmlNodeList nodelist = element.ChildNodes;
//XmlNamedNodeMap mapInnerXml = xnod.InnerXml;
//将节点属性添加到Datatable中
foreach (XmlNode node in nodelist)//读元素值
{
if (node is XmlElement)
{
XmlElement el = (XmlElement)node;
string childName = el.Name;
string childText = strIndent + el.InnerText;
//使用Rescource从资源文件中读取值
if (Resources.IndicatorResource.ResourceManager.GetString(childName) != null)
{
childName = Resources.IndicatorResource.ResourceManager.GetString(childName);
}
DataRow dr = xmlDT.NewRow();
dr["Node"] = intLevel;
dr["NodeName"] = childName;
dr["NodeValue"] = childText;
xmlDT.Rows.Add(dr);
}
}
//如果还有子节点,就递归地调用这个程序
if (xnod.HasChildNodes)
{
xnodWorking = xnod.FirstChild;
while (xnodWorking != null)
{
AddWithChildren(xnodWorking, intLevel + 1, ref xmlDT);
xnodWorking = xnodWorking.NextSibling;
}
}
}
return xmlDT;
}
}




浙公网安备 33010602011771号