try
{
string sheetname =
TextBox1.Text.Trim();
HttpPostedFile upLoadPostFile =
FileUpload1.PostedFile;
string upLoadPath =
FileUpload1.PostedFile.FileName;
if (upLoadPath ==
"")
{
ShowAlertMessage("请选择上传文件!");
return;
}
string excelType = upLoadPath.Split(
'.')[
1].ToString();
if (excelType !=
"xls" && excelType !=
"xlsx")
{
ShowAlertMessage("此文件不是xls或者xlsx格式,请重新选择上传文件格式!");
}
else
{
InvoiceData.PutInvoiceJsonByExcel(sheetname, upLoadPostFile);
ShowAlertMessage("发送开票请求完毕!");
}
}
catch (Exception ex)
{
CustomValidator1.ErrorMessage =
ex.Message;
CustomValidator1.IsValid =
false;
}
public static void PutInvoiceJsonByExcel(
string sheetName, HttpPostedFile upLoadPostFile)
{
try
{
//创建一个数据链接
StringBuilder strCon =
new StringBuilder();
strCon.Append("Provider=Microsoft.ACE.OLEDB.12.0;");
strCon.Append("Data Source=" + upLoadPostFile.FileName +
";");
strCon.Append("Extended Properties=\"Excel 12.0;IMEX=1;\"");
OleDbConnection myConn =
new OleDbConnection(strCon.ToString());
string strCom =
"SELECT * FROM [" + sheetName +
"$] ";
myConn.Open();
//打开数据链接,得到一个数据集
OleDbDataAdapter myCommand =
new OleDbDataAdapter(strCom, myConn);
DataSet myDataSet =
new DataSet();
//得到自己的DataSet对象
myCommand.Fill(myDataSet, sheetName);
myConn.Close();
myConn.Dispose();
foreach (DataRow dr
in myDataSet.Tables[
0].Rows)
{
string strOrderSn = dr[
0].ToString().Trim();
DataTable dt =
OrderData.GetInvoiceByOrderSn(strOrderSn);
InvoiceData.PutInvoiceJson(dt);
}
}
catch (Exception ex)
{
throw new Exception(
"PutInvoiceJsonByExcel Error: " +
ex.Message);
}
}
在做到需求的时候,改变了上传的Excel的上传格式,就是从Excel的第三行开始读取数据,在sql链接的地方做的属性HRD=yes;只能过滤掉第一行,但是现在是要过滤掉前两行的内容。
emmmmmmmma
应该这样做
Method1:
在进行select的时候,加上sheet的范围:
string strCom = "SELECT * FROM [" + sheetName + "$B2:E4] ";
就是上面的这样 $后面加上要读取数据的范围就ok了==》B2到E4的覆盖的数据,
但是,它是已B2为坐标原点,向右向下延伸,涉及到的当前右行和下行的数据是读不到的。
Method2:
//下面i的初始值等于几,就是从第n+1行开始读取的
for (int i = n; i < dt.Rows.Count; i++)
{
string Col1 = dt.Rows[i][1].ToString(); //得到第一列 订单号:
string Col2 = dt.Rows[i][2].ToString();//得到第2列 运单号
string Col3 = dt.Rows[i][3].ToString();//得到第三列 子单号
string Col4 = dt.Rows[i][4].ToString();//得到第4列 回签单号
}
转载于:https://www.cnblogs.com/ZkbFighting/p/9894774.html