public int ExcelDataCheck(Excel.Application excel)
{
int errorNumber = 0; Excel.Workbooks xBks = excel.Workbooks;
Excel.Workbook xBk = xBks.get_Item(1); try
{
DataService service = new DataService();
DataSet structDS = new DataSet();
string unableSheetNames = ""; for(int i=0;i<xBk.Worksheets.Count;i++)
{
//sheet和cell都是从1开始索引
((Excel._Worksheet)xBk.Worksheets.get_Item(i+1)).Activate();
string sheetName = ((Excel._Worksheet)xBk.Worksheets.get_Item(i+1)).Name; string strSql = "select * from datadictionary where tb_name_c ='" + sheetName + "'";
structDS = service.oDataSet(strSql,sheetName);
if(structDS.Tables.Count ==0 || structDS.Tables[sheetName].Rows.Count ==0)
{
unableSheetNames += ((Excel._Worksheet)xBk.Worksheets.get_Item(i+1)).Name +"\r\n";
}
else
{
//该sheet有多少行,计算原则是EID不为空则加一行
int rowCount=2;
bool myNull = false;
while(!myNull)
{
Excel.Range range = excel.get_Range(excel.Cells[rowCount,1],excel.Cells[rowCount,1]);
rowCount++; if(range.Value2 == null || range.Value2.ToString() == "")
myNull = true;
}
rowCount -= 2; for(int j=0;j<structDS.Tables[sheetName].Rows.Count;j++)
{
for(int k=0;k<rowCount;k++)
{
string fdname = structDS.Tables[sheetName].Rows[j]["FD_Name_C"].ToString(); string strType = structDS.Tables[sheetName].Rows[j]["FD_Type"].ToString(); int iSize = Convert.ToInt32(structDS.Tables[sheetName].Rows[j]["FD_Size"]);
int iDigit = Convert.ToInt32(structDS.Tables[sheetName].Rows[j]["FD_Digit"]); Excel.Range range1 = excel.get_Range(excel.Cells[k+2,j+1],excel.Cells[k+2,j+1]);
string strValue = "";
if(range1.Value2 != null)
{
if(strType == "datetime")
{
range1.Columns.AutoFit();
strValue = range1.Text.ToString();
}
else
strValue = range1.Value2.ToString();
} if(strValue != "" && !service.verifyValue(strValue,iSize,iDigit,strType))
{
excel.get_Range(excel.Cells[k+2,j+1],excel.Cells[k+2,j+1]).Interior.ColorIndex = 19;
errorNumber++;
}

}
}
} }
if(unableSheetNames != "")
{
MessageBox.Show("无效的页名:\r\n" + unableSheetNames);
} return errorNumber; }
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return 9999;
}
finally
{
//结束进程 }