实例介绍
【实例简介】
此例子是通过C# 访问网页后台元素,把EXCEL文件的数据自动上传到网页中的程序
【实例截图】
【核心代码】
private void ForDataUpload(object obj)
{
int length = 100000;//EXCEL 数据长度
//int TempRow = 0;//临时行数
int i = 0;
int ii = 0;
int iii = 0;
bool isOk = false;// 判断进程中是否有EXCEL;
bool isExcelName = false;//excel文件名字是否存在
bool IsGetValue = true;//得到没条记录1到10的值
int StartTowFor = 0;//每条记录循环的开始的行数
int EndTowFor = 0;//每条记录循环的结束的行数
//bool IspaymentOne = false;
//bool OnePaymentInformation = true;
//bool OneReferenceInformation =true;
Microsoft.Office.Interop.Excel.Worksheet sheet = null;
//try
//{
mshtml.HTMLInputElement TempHtml;
TempHtml = null;
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
//遍历所有选项卡
foreach (SHDocVw.InternetExplorer Browser in shellWindows)
{
if (Browser.LocationURL.Contains("https://gfisasiapacific.iweb.ey.com/psp/F3PR/EMPLOYEE/ERP/c/APPLY_PAYMENTS.PAYMENT_ENTRY.GBL?FolderPath=PORTAL_ROOT_OBJECT.EPCO_ACCOUNTS_RECEIVABLE.EPAR_PAYMENTS4.EPAR_CREATE_ONLINE_PAYMENTS3.EP_PAYMENT_ENTRY_GBL&IsFolder=false&IgnoreParamTempl=FolderPath%2cIsFolder") ||
Browser.LocationURL.Contains("https://gfisasiapacific.iweb.ey.com/psp/F3PR/EMPLOYEE/ERP/c/APPLY_PAYMENTS.PAYMENT_ENTRY.GBL?PORTALPARAM_PTCNAV=EP_PAYMENT_ENTRY_GBL&EOPP.SCNode=ERP&EOPP.SCPortal=EMPLOYEE&EOPP.SCName=EPCO_ACCOUNTS_RECEIVABLE&EOPP.SCLabel=Online%20Payments&EOPP.SCFName=EPAR_CREATE_ONLINE_PAYMENTS3&EOPP.SCSecondary=true&EOPP.SCPTfname=EPAR_CREATE_ONLINE_PAYMENTS3&FolderPath=PORTAL_ROOT_OBJECT.EPCO_ACCOUNTS_RECEIVABLE.EPAR_PAYMENTS4.EPAR_CREATE_ONLINE_PAYMENTS3.EP_PAYMENT_ENTRY_GBL&IsFolder=false") ||
Browser.LocationURL.Contains("https://gfisasiapacific.iweb.ey.com/psp/F3PR/EMPLOYEE/ERP/h/?tab=DEFAULT"))
{
ie = Browser;
mshtml.HTMLDocument docTemp = (mshtml.HTMLDocument)Browser.Document;
doc = docTemp;
mshtml.IHTMLElementCollection inputs1 = (mshtml.IHTMLElementCollection)docTemp.all.tags("INPUT");
mshtml.HTMLInputElement InvoiceDate1 = (mshtml.HTMLInputElement)inputs1.item("ptnav2srchinput", 0);
if (InvoiceDate1 != null)
{
TempHtml = InvoiceDate1;
break;
}
}
}
if (TempHtml == null && OneAccWeb==true)
{
OneAccWeb = true;
MessageBox.Show("没找到对应的网页!", "提示信息!", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else
{
OneAccWeb = false ;
}
//获取当前EXCEL
Hashtable rot = GetRunningObjectTable();
//isOk = false; //判断进程中是否有EXCEL;
ExitFor = false;//判断是否需要退出循环;
foreach (object o in rot.Values)
{
Microsoft.Office.Interop.Excel.Application a = o as Microsoft.Office.Interop.Excel.Application;
if (a != null)
{
isOk = true;
Microsoft.Office.Interop.Excel.Workbooks wbooks = a.Workbooks;
isExcelName = false;
foreach (Microsoft.Office.Interop.Excel.Workbook wb in wbooks)
{
if (wb.Name.IndexOf(ExcelFileName) != -1)
{
isExcelName = true;
sheet = wb.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
if (sheet.Cells[1, 1].value != "Account" || sheet.Cells[1, 2].value != "Deposit Unit")
{
MessageBox.Show("没有找到对应的数据列!", "提示信息!", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
for (i = 2; i < length; i )
{
try
{
if (ie.LocationURL != "https://gfisasiapacific.iweb.ey.com/psp/F3PR/EMPLOYEE/ERP/h/?tab=DEFAULT")
//if (ie.LocationURL != "https://gfisasiapacific.iweb.ey.com/psp/F3PR/EMPLOYEE/ERP/c/APPLY_PAYMENTS.PAYMENT_ENTRY.GBL?FolderPath=PORTAL_ROOT_OBJECT.EPCO_ACCOUNTS_RECEIVABLE.EPAR_PAYMENTS4.EPAR_CREATE_ONLINE_PAYMENTS3.EP_PAYMENT_ENTRY_GBL&IsFolder=false&IgnoreParamTempl=FolderPath%2cIsFolder")
{
ie.Navigate("https://gfisasiapacific.iweb.ey.com/psp/F3PR/EMPLOYEE/ERP/c/APPLY_PAYMENTS.PAYMENT_ENTRY.GBL?FolderPath=PORTAL_ROOT_OBJECT.EPCO_ACCOUNTS_RECEIVABLE.EPAR_PAYMENTS4.EPAR_CREATE_ONLINE_PAYMENTS3.EP_PAYMENT_ENTRY_GBL&IsFolder=false&IgnoreParamTempl=FolderPath%2cIsFolder");
}
}
catch (Exception)
{
continue;
//throw;
}
if ((sheet.Cells[i, 6].value == "" || sheet.Cells[i, 6].value == null) && (sheet.Cells[i, 2].value == "" || sheet.Cells[i, 2].value == null))
{
timerNext.Stop();
MessageBox.Show("数据已经全部完成!", "提示信息!", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
PaymentCount = 0;
SaveDepositID = "";
//IspaymentOne = true;
isMulPayments = false; //Payments多条的时候点击按钮
isRefValueClick = false; //RefValue 多条时点击按钮
//判断记录最开始一条,然后取的前几列的值
m_bPause1 = true;
EnterAddNewOne();
StartTowFor = i;
strType1 = sheet.Cells[i, 2].value;
strType2 = sheet.Cells[i, 3].value;
strType3 = sheet.Cells[i, 4].value;
strType4 = sheet.Cells[i, 5].value;
strType5 = Convert.ToInt32(sheet.Cells[i, 6].value);
strType6 = Convert.ToString(string.Format("{0:M/d/yyyy}", sheet.Cells[i, 7].value));
//IsGetValue = false;
isDepositUnit = true;
isTotals = true;
while (m_bPause1)
{
Application.DoEvents();
}
Invoke(new MethodInvoker(delegate
{
label1.Text = i.ToString();
}));
System.Threading.Thread.Sleep(1000);
for (int iLocal = i; iLocal < length; iLocal )
{
StartTowFor = i;
if (sheet.Cells[iLocal, 1].value == null)
{
i = iLocal - 1;
break;
}
if (sheet.Cells[iLocal, 6].value != null && iLocal != i)
{
i = iLocal - 1;
break;
}
}
EndTowFor = i 1;
//int TempCount = 0;
//开始一个填表循环
for (ii = StartTowFor; ii < EndTowFor; ii )
{
MuNext = false;
ListNo = false;
SaveDepositID = "";
m_bPause1 = true;
string TempNum = "";
//m_bPause2 = true;
//判断Payment ID是否连续
//if (sheet.Cells[ii, 9].value != null)
if (sheet.Cells[ii, 8].value != "" && ii == StartTowFor)
{
strType11 = "";
PaymentCount = PaymentCount 1;
strType7 = sheet.Cells[ii, 8].value;
TempNum = Convert.ToString(sheet.Cells[ii, 9].value);
if (IsNumeric(TempNum))
{
strType8 = sheet.Cells[ii, 9].value;
}
else
{
strType8 = 0;
}
if (sheet.Cells[ii, 10].value != null)
{
strType91 = sheet.Cells[ii, 10].value;
strType92 = sheet.Cells[ii, 11].value;
}
else
{
strType91 = 0;
}
strType9 = sheet.Cells[ii, 12].value;
strType10 = sheet.Cells[ii, 13].value;
if (strType10 != null)
{
strType10 = strType10.Trim();
}
if (strType11 == "")
{
strType11 = sheet.Cells[ii, 19].value;
}
isPayments = true;
//暂停循环
while (m_bPause1)
{
Application.DoEvents();
}
Invoke(new MethodInvoker(delegate
{
label1.Text = i.ToString();
}));
System.Threading.Thread.Sleep(1000);
}
if (sheet.Cells[ii, 8].value != null && ii != StartTowFor)
{
PaymentCount = PaymentCount 1;
strType7 = sheet.Cells[ii, 8].value;
TempNum = Convert.ToString(sheet.Cells[ii, 9].value);
if (IsNumeric(TempNum))
{
strType8 = sheet.Cells[ii, 9].value;
}
else
{
strType8 = 0;
}
if (sheet.Cells[ii, 10].value != null)
{
strType91 = sheet.Cells[ii, 10].value;
strType92 = sheet.Cells[ii, 11].value;
}
else
{
strType91 = 0;
}
strType9 = sheet.Cells[ii, 12].value;
strType10 = sheet.Cells[ii, 13].value;
if (strType10 !=null)
{
strType10 = strType10.Trim();
}
//strType11 = sheet.Cells[ii, 19].value;
m_bPause1 = true;
isMulPayments = true;
System.Threading.Thread.Sleep(1000);
//isPayments = true;
while (m_bPause1)
{
Application.DoEvents();
}
Invoke(new MethodInvoker(delegate
{
label1.Text = i.ToString();
}));
System.Threading.Thread.Sleep(1000);
m_bPause1 = true;
isPayments = true;
//isPayments = true;
while (m_bPause1)
{
Application.DoEvents();
}
Invoke(new MethodInvoker(delegate
{
label1.Text = i.ToString();
}));
System.Threading.Thread.Sleep(1000);
}
//检查Ref是不是多行
if (sheet.Cells[ii 1, 8].value == null) //sheet.Cells[ii, 9].value == null && sheet.Cells[ii, 5].value == null
{
AList.Clear();
for (iii = ii; iii < EndTowFor; iii )
{
if (iii == ii)
{
AList.Add(sheet.Cells[iii, 13].value);
}
else
{
if (sheet.Cells[iii, 8].value == null)
{
AList.Add(sheet.Cells[iii, 13].value);
if (iii == EndTowFor - 1 || sheet.Cells[iii 1, 9].value != null)
{
ii = iii - 1;
//执行按下多行的Ref按钮
isRefValueClick = true;
//m_bPause1 = false;
MuNext = true;
break;
}
}
}
}
//20160908
if (ii 1 != EndTowFor)
{
//暂停循环
while (m_bPause1)
{
Application.DoEvents();
}
Invoke(new MethodInvoker(delegate
{
label1.Text = i.ToString();
}));
System.Threading.Thread.Sleep(1000);
}
}
////暂停循环
//while (m_bPause1)
//{
// Application.DoEvents();
//}
//Invoke(new MethodInvoker(delegate
//{
// label1.Text = i.ToString();
//}));
//System.Threading.Thread.Sleep(1000);
if (ii 1 == EndTowFor)
{
//m_bPause2 = true;
ListNo = true;
ClickComments = true;
m_bPause1 = true;
}
//if (ii 1 == EndTowFor-1)
//{
// MuNext = true;
//}
if (MuNext == false)
{
//暂停循环
while (m_bPause1)
{
Application.DoEvents();
for (int iiiii = 1; iiiii < 5; iiiii )
{
System.Threading.Thread.Sleep(1000);
}
m_bPause1 = false;
}
Invoke(new MethodInvoker(delegate
{
label1.Text = i.ToString();
}));
System.Threading.Thread.Sleep(1000);
}
//保存完成以后取值
if (SaveDepositID != "")
{
sheet.Cells[StartTowFor, 14].value = SaveDepositID;
}
} // for ii 结束
}
ExitFor = true;
break;
}
}
if (!isExcelName)
{
MessageBox.Show("没有找到需要上传Excel!", "提示信息!", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
//a.DisplayAlerts = false;
//a.Quit();
}
if (ExitFor == true)
{
break;
}
}//for
if (isOk == false)
{
MessageBox.Show("没有打开的EXCEL!", "提示信息!", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
timerNext.Stop();
//catch (Exception ex)
//{
// //throw;
// if (ex.Message == "Object reference not set to an instance of an object.")
// {
// MessageBox.Show("数据获取不完全,有字段值没有获取到!");
// }
// else
// {
// MessageBox.Show("网页有错误!");
// }
// //Object reference not set to an instance of an object.
// //MessageBox.Show(ex.Message);
// return;
//}
}
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论