文件导入
一:CSV类型文件导入,使用数据流操作
[1]文件上传部分,方法将上传的文件路径保存到一个隐藏域内,在需要导入的时候去隐藏域内取得文件路径后进行导入操作,临时文件通过订时器来进行删除。
#region 文件上传
protected void FileUpLoad(object sender, EventArgs e)
{
string filePath = ""; //上传文件客户端路径
string path = ""; //上传文件名
string UpFileName = ""; //上传后服务器端文件路径
try
{
if (FileUpload.PostedFile.FileName == "")
{
this.AddMessage("I_019");
this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
}
else
{
//取得客户端文件路径
filePath = FileUpload.PostedFile.FileName.ToString();
string[] PathList = filePath.Split('\\');
//取得上传文件的文件名
path = PathList[PathList.Count() - 1];
FileUpload.PostedFile.SaveAs(Server.MapPath(path));
//获取上传成功后路径
UpFileName = Server.MapPath(path);
//使用数据流取得上传文件内容
StreamReader m_streamReader = null;
m_streamReader = FEB.getStreamReader(filePath);
m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin);
string InSystemList = m_streamReader.ReadLine();
InSystemList = m_streamReader.ReadLine();
if (InSystemList != null)
{
int SystemCount = 1;
//取得导入数据的内容
string[] arr = InSystemList.Split(',');
string CustomerName = arr[1].ToString(); //客户名称-对应英文缩写名称
string SystemNO = arr[2].ToString(); //机型编号
string ID = arr[3].ToString(); //机台编号
string STN = arr[4].ToString(); //STN
string SUB_STN = arr[5].ToString(); //SUBTAN
string IssueDate = arr[6].ToString(); // 日本发出日期
string TargetDueDate = arr[7].ToString(); // FCO预计完成日期
string BudgetTerminatedDate = arr[8].ToString(); // 预算结束日期
string AnnouncementDate = arr[9].ToString(); //机台发布日期
string ScheduleDate = arr[10].ToString(); //机台预计完成日期
string PerformedDate = arr[11].ToString(); //?
string ECO_NO = arr[12].ToString(); //FCO编号
string RANK = arr[13].ToString(); //类型
string Subject = arr[14].ToString(); //描述
string Treatment = arr[15].ToString(); //对策
//判断FCO是否已经重复导入
int FCOCount = FIB.RepeatFCO(ECO_NO);
if (FCOCount == 0)
{
DataTable FCOTable = FIB.FCODataTable(-1);
while (InSystemList != null)
{
InSystemList = m_streamReader.ReadLine();
if (InSystemList != null)
{
SystemCount = SystemCount + 1;
}
}
DataColumn dc = new DataColumn();
dc.ColumnName = "SystemCount";
dc.DefaultValue = SystemCount;
dc.DataType = Type.GetType("System.String");
FCOTable.Columns.Add(dc);
FCOTable.AcceptChanges();
DataColumn dcRank = new DataColumn();
dcRank.ColumnName = "Rank";
dcRank.DefaultValue = RANK;
dcRank.DataType = Type.GetType("System.String");
FCOTable.Columns.Add(dcRank);
FCOTable.AcceptChanges();
DataRow row = FCOTable.NewRow();
FCOTable.Rows.Add(row);
FCOTable.Rows[0]["FCO_NO"] = ECO_NO;
FCOTable.Rows[0]["FCO_SUBJECT"] = Subject;
FCOTable.Rows[0]["FCO_TREATMENT"] = Treatment;
gv_FCO_Import.DataSource = FCOTable;
gv_FCO_Import.DataBind();
FileAddress.Value = filePath;
}
else
{
this.AddMessage("E_034");
this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
}
}
else
{
this.AddMessage("E_035");
this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
}
}
}
catch (Exception)
{
this.AddMessage("E_035");
this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
}
}
#endregion
[2]文件导入部分
#region 导入上传文件
protected void FileImport(object sender, EventArgs e)
{
string filePath = ""; //上传文件客户端路径
string path = ""; //上传文件名
string UpFileName = ""; //上传后服务器端文件路径
try
{
if (FileAddress.Value.ToString() == "")
{
this.AddMessage("I_019");
this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
}
else
{
//取得客户端文件路径
filePath = FileAddress.Value.ToString();
string[] PathList = filePath.Split('\\');
//取得上传文件的文件名
path = PathList[PathList.Count() - 1];
FileUpload.PostedFile.SaveAs(Server.MapPath(path));
//获取上传成功后路径
UpFileName = Server.MapPath(path);
//使用数据流取得上传文件内容
StreamReader m_streamReader = null;
m_streamReader = FEB.getStreamReader(filePath);
m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin);
string InSystemList = m_streamReader.ReadLine();
//用于判断是否已经新建FCO记录
bool IsFCO = false;
//记录新建FCOID
int FCOID = -1;
//开始导入
while (InSystemList != null)
{
InSystemList = m_streamReader.ReadLine();
if (InSystemList != null)
{
//取得条导入数据的内容
string[] arr = InSystemList.Split(',');
string CustomerName = arr[1].ToString(); //客户名称-对应英文缩写名称
string SystemNO = arr[2].ToString(); //机型编号
string ID = arr[3].ToString(); //机台编号
string STN = arr[4].ToString(); //STN
string SUB_STN = arr[5].ToString(); //SUBTAN
string IssueDate = arr[6].ToString(); // 日本发出日期
string TargetDueDate = arr[7].ToString(); // FCO预计完成日期
string BudgetTerminatedDate = arr[8].ToString(); // 预算结束日期
string AnnouncementDate = arr[9].ToString(); //机台发布日期
string ScheduleDate = arr[10].ToString(); //机台预计完成日期
string PerformedDate = arr[11].ToString(); //?
string ECO_NO = arr[12].ToString(); //FCO编号
string RANK = arr[13].ToString(); //类型
string Subject = arr[14].ToString(); //描述
string Treatment = arr[15].ToString(); //对策
if (IsFCO == false)
{
FCOID = FIB.ImportFCO(ECO_NO, SUB_STN, IssueDate, TargetDueDate, BudgetTerminatedDate, RANK, Subject, Treatment);
IsFCO = true;
}
else
{
FIB.ImportFCOSystem(FCOID.ToString(), FIB.getFCONO(ID, "M_MACHINE", "MCH_ID", "MCH_NO"), AnnouncementDate, ScheduleDate, PerformedDate, FIB.getCodeValue("STN", SUB_STN));
}
}
}
this.AddMessage("I_021");
this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
}
}
catch (Exception)
{
this.AddMessage("E_035");
this.MessageType = Advantest.AcsErp.Web.WebControls.MessageType.Info;
}
}
#endregion
备注
具体项目内容参见 08-2-026-001AdvanTestErp一期
FCO导入部分内容。