两个table的名字还不相同,
里面的数据是第一个table 比第二个table少一列数据,
第二个table数据是正确的。
这是为什么?
里面的数据是第一个table 比第二个table少一列数据,
第二个table数据是正确的。
这是为什么?
解决方案 »
- gridview 数据多,输出到word后如何设置word的分页?请高手帮忙!
- 天啦,今天才知道在vs的app_data文件夹下放数据库文件,配置一下web.config同样可以访问,亏得我每次傻乎乎的附加数据库!!!
- Calendar颜色问题
- 查询问题
- 请教:怎样将两个库显示在同一个表里
- VS 2003安装问题
- extjs学习
- 怎么能使.net的aspx模板像smarty那样,能有标签替换功能?
- ASP.net问题,如何防止非法用户恶意提交重复数据?
- asp.net直接连接access的问题
- 为何表单中<asp:TextBox>中按下Enter键,只会回车,不会提交表单?如何解决?
- 如何用长时间线程每天更新网站?
string text = "Provider=Microsoft.Jet.OLEDB.4.0;";
string text2 = "Data Source=" + fileName;
string connectionString = text + text2 + ";Extended Properties='Excel 8.0;HDR=yes;IMEX=1;'";
string[] sheetName;
OleDbConnection selectConnection = new OleDbConnection(connectionString);
DataSet dataSet = new DataSet();
DataTable dataStruct = new DataTable();
selectConnection.Open();
try
{
dataStruct = selectConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dataStruct != null)
{
sheetName = new string[dataStruct.Rows.Count];
int i = 0;
foreach (DataRow row in dataStruct.Rows)
{
sheetName[i] = row["TABLE_NAME"].ToString();
string selectCommandText = "select * from [" + sheetName[i] + "]";
OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommandText, selectConnection);
adapter.Fill(dataSet, sheetName[i]);
i++;
}
}
}
这个不就是大家通用的方法嘛。
但是在excel里只显示一个工作表 去除隐藏那个功能还是 显示一个
里面的数据是第一个table 比第二个table少一列数据,
第二个table数据是正确的。
这是为什么?
用Excel用xml文件打开看看你的表结构
当你修改要插入的表时 你的表结构就发生的变化
你修改不同值的数据时 你的xml结构也会变化的(郁闷吧)试试这个:
可以在bin中引用NExcel.dll 组件 操作
读取不同的sheet(根据需要)sheet数据插入到table中 在插入数据库 不过性能上有些影响 毕竟2次搬数据参考:
#region 读取增值税应交明细表Excel文件的数据并显示出来 /*-*******************************************************************/
/* 函数名 :Add_excel */
/* 处理内容 :增值税的Excel文件读取 */
/* 形式 :Add_excel(string fullPath) */
/* (string fullPath, string compId, */
/* string compName) */
/* 序号 参数名 型 I/O 说 明 */
/* (1) fullPath string */
/* (2) compId string */
/* (3) compName string */
/* 返回值 :DataTable */
/*******************************************************************-*/
public DataTable Add_excel(string fullPath, string compId, string compName)
{
//@获得表结构
DataTable eAddedTaxDetail = new DataTable();
//@
eAddedTaxDetail.TableName = "eAddedTaxDetail";
//@
DataRow dr;
DataRow drEnd;
eAddedTaxDetail.Columns.Add("YYMM");
eAddedTaxDetail.Columns.Add("UnBalance", typeof(Decimal));
eAddedTaxDetail.Columns.Add("CancelTax", typeof(Decimal));
eAddedTaxDetail.Columns.Add("ExpRetTax", typeof(Decimal));
eAddedTaxDetail.Columns.Add("ImpTaxOut", typeof(Decimal));
eAddedTaxDetail.Columns.Add("OutAddedTax", typeof(Decimal));
eAddedTaxDetail.Columns.Add("ImportTax", typeof(Decimal));
eAddedTaxDetail.Columns.Add("AlreadyTax", typeof(Decimal));
eAddedTaxDetail.Columns.Add("OutUnTax", typeof(Decimal));
eAddedTaxDetail.Columns.Add("EndUnBalance", typeof(Decimal));
eAddedTaxDetail.Columns.Add("StartUnpay", typeof(Decimal));
eAddedTaxDetail.Columns.Add("InputPay", typeof(Decimal));
eAddedTaxDetail.Columns.Add("AlreadyPay", typeof(Decimal));
eAddedTaxDetail.Columns.Add("EndUnpay", typeof(Decimal)); eAddedTaxDetail.Columns.Add("DeleteFlg");
eAddedTaxDetail.Columns.Add("UpdateUser");
eAddedTaxDetail.Columns.Add("UpdateDate");
eAddedTaxDetail.Columns.Add("CompID");
eAddedTaxDetail.Columns.Add("CompName");
eAddedTaxDetail.Columns.Add("DataCol");
//@获得要读取Excel文件
Workbook wb = Workbook.getWorkbook(fullPath);
//@初始化要读的sheet
Sheet mysheet = null;
//T@ 获得要读取的Sheet
foreach (Sheet sheet in wb.Sheets)
{
if (sheet.Name.Equals("利润表"))
{
mysheet = sheet;
break;
}
} //T@ 判断是否存在sheet的情况
if (mysheet == null)
{
return null;
}
//@增加两行
dr = eAddedTaxDetail.NewRow();
drEnd = eAddedTaxDetail.NewRow();
//T@ 读取Excel中的本月数和本年累计数
for (int irow = FiAnaConstant.BeginRowAdd; irow <= FiAnaConstant.EndRowAdd; irow++)
{ int beginCol = FiAnaConstant.BeginColAdd;
//@ 隐藏列
Cell cell = mysheet.getCell(beginCol, irow);
if (cell.Value == "" || cell.Value == null)
{
continue;
}
//@获得隐藏标记
int colIndex = Convert.ToInt32(cell.Value);
beginCol++;
//@ 本月数
cell = mysheet.getCell(beginCol, irow);
dr[colIndex] = cell.Value.ToString(); //@本年累计数
beginCol++;
cell = mysheet.getCell(beginCol, irow);
drEnd[colIndex] = cell.Value.ToString();
} //@给本月数赋值
dr["YYMM"] = YearList.Value.ToString() + MonthList.Value.ToString();
dr["DeleteFlg"] = CommonConstant.DELETE_ZERO;
dr["UpdateUser"] = GetSCGSession().GetUserInfo().UserId;
dr["UpdateDate"] = DateTime.Now;
//@获得公司ID
dr["CompID"] = compId;
//@获得公司名称
dr["CompName"] = compName;
//@本月数
dr["DataCol"] = CommonConstant.PROFIT_DATACOL_MONTH;
eAddedTaxDetail.Rows.Add(dr); //@给本年累计数赋值
drEnd["YYMM"] = YearList.Value.ToString() + MonthList.Value.ToString();
drEnd["DeleteFlg"] = CommonConstant.DELETE_ZERO;
drEnd["UpdateUser"] = GetSCGSession().GetUserInfo().UserId;
drEnd["UpdateDate"] = DateTime.Now;
//@获得公司ID
drEnd["CompID"] = compId;
//@获得公司名称
drEnd["CompName"] = compName;
//@本年累计数
drEnd["DataCol"] = CommonConstant.PROFIT_DATACOL_YEAR;
eAddedTaxDetail.Rows.Add(drEnd); return eAddedTaxDetail;
}
#endregion
{ System.Data.OleDb.OleDbConnection OleDb_Conn = new OleDbConnection();
OleDb_Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=Yes';" + "Data Source=\"" + strPath + "\"";
try
{
OleDb_Conn.Open();
OleDbCommand OleDb_Comm = new OleDbCommand();
OleDb_Comm.Connection = OleDb_Conn; string strCmd;
try
{
strCmd = "drop table ["+sheetname+"]";
OleDb_Comm.CommandText = strCmd;
OleDb_Comm.ExecuteNonQuery();
}
catch
{
} strCmd = "create Table ["+sheetname+"](";
foreach (DataColumn dc in dtSource.Columns)
{
strCmd += "[" + dc.ColumnName + "] nchar(50),";
}
strCmd = strCmd.Trim().Substring(0, strCmd.Length - 1);
strCmd += ")";
OleDb_Comm.CommandText = strCmd; OleDb_Comm.ExecuteNonQuery(); foreach (DataRow dr in dtSource.Rows)
{
if (dr.RowState != System.Data.DataRowState.Deleted)
{
strCmd = "insert into ["+sheetname+"] values(";
foreach (DataColumn dc in dtSource.Columns)
{
strCmd += "'" + dr[dc.ColumnName].ToString() + "',";
} strCmd = strCmd.Substring(0, strCmd.Length - 1);
strCmd += ")"; OleDb_Comm.CommandText = strCmd;
OleDb_Comm.ExecuteNonQuery(); }
}
OleDb_Conn.Close();
}
catch (Exception ex)
{
tool.WarningDialog(ex.Message);
}
finally
{
OleDb_Conn.Close();
}
}