日期:2014-05-18  浏览次数:20506 次

疑难问题~~,请各位高手指点~~!可追加分!--sqlserver/excel批量处理问题
首先不考虑采用b/s或c/s那种架构,我想集中处理一批excel表(大概几百个,结构不同),这些表在内容上有相关/相同字段,我主要是想把重复信息去掉,把几张表的信息整合到一起,最终是要导到sqlserver中的,我不知道:
1、是先把众多excel表现整合为一张表处理好呢,还是先都导入到sqlserver中,然后再处理成一张表好呢
2、怎么样批量将不同结构的excel表导入到sqlserver的一张表中?
3、我发现dtc很不错,功能比较全,但是只能导入单个excel文件,我的问题还和批量有关,能不能在后台程序上c#使用dtc的功能,处理多个excel表?
4、这个问题离上面的问题比较远:如果我想通过c#将一批excel表的字段列出,应该怎么做?

我的思路可能不太清晰,问得也比较愚钝,还烦请各位多多指点,不胜感激,可以加分!

如果对后台代码不是很熟悉,也可就我的问题单从excel和sqlserver的角度来解答。

我在C#板块中也提了类似问题,分值可以合并给与,更可酌情加分!

------解决方案--------------------
你可以把excel文件做为数据源来做,然后读到datagride里啊.
------解决方案--------------------
楼主可以参考下面段代码(出于保密不能全部给你):

string strConn = "Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source= " + filepath + "; " + "Extended Properties= 'Excel 8.0;HDR=YES;IMEX=2; ' ";
//Response.Write(strConn);
OleDbConnection myconn = new OleDbConnection(strConn);
try
{
myconn.Open();
DataTable schemaTable = myconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE " });
DataRow[] rows = schemaTable.Select();

if (schemaTable.Rows.Count > 1)
{
this.labFileMessage.Text = "上传失败:上传文件的文件结构被改变了,请确认 ";
return;
}
else if (schemaTable.Rows.Count == 1 && rows[0][ "Table_Name "].ToString() != "Sheet1$ ")
{
this.labFileMessage.Text = "上传失败:上传文件的文件结构被改变了,请确认 ";
return;
}
string strExcel = " ";

OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel = "select * from [sheet1$] ";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds, "table1 ");
myconn.Close();

//Response.Write(ds.Tables[0].Columns.Count);
//Response.End();



------解决方案--------------------
很少涉及到,在学习!!!