• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
笨笨笨笨
博客园    首页    新随笔    联系   管理    订阅  订阅

完成第七步——遍历子节点

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;
    }


}



 

posted @ 2009-06-14 16:12  笨笨笨笨  阅读(188)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3