其实你这个问题和
---------------------------------------------
主 题: 关于将数据保存成excel xls格式的问题
作 者: xiaolie ()
------------------------------------------
几乎是同一个问题。何必用控件。自己直接编程即可。把Excel当做数据库。 向Execl数据库中插入记录即可。 微软提供了EXCEl数据库的借口。我可以向你保证百分之百行。
---------------------------------------------
主 题: 关于将数据保存成excel xls格式的问题
作 者: xiaolie ()
------------------------------------------
几乎是同一个问题。何必用控件。自己直接编程即可。把Excel当做数据库。 向Execl数据库中插入记录即可。 微软提供了EXCEl数据库的借口。我可以向你保证百分之百行。
这样不行!!!public bool ImportData(string strFilePath, string dataTypeName)
{
if(strFilePath == null)
return false; //定义对Excel的OLEDB连接
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=" + strFilePath + ";" +"Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn);
//察看dataTypeName,得到对应的数据类型的信息
DataTypeInfo dataTypeInfo = null;
int dataTypeArryCount = dataTypeInfoArray.Count;
for(int i = 0;i < dataTypeArryCount;i++)
{
//匹配数据类型名称
DataTypeInfo Info = (DataTypeInfo)dataTypeInfoArray[i];
if(dataTypeName == Info.dataTypeName)
{
dataTypeInfo = Info;
break;
}
} //如果数据信息没有找到,return
if(dataTypeInfo == null)
return false; //如果sheet信息不存在,return
int sheetInfoArrayCount = dataTypeInfo.sheetInfoArray.Count;
if(sheetInfoArrayCount == 0)
return false; //分别处理sheet数据,把它们都放到DataClass中,然后进行数据导入
for(int j = 0;j < sheetInfoArrayCount;j++)
{
SheetInfo sheetInfo = (SheetInfo)TypeInfo.sheetInfoArray[j];
string sheetName = sheetInfo.sheetName; //从Excel中读取相应的值
string strCommand = "SELECT * FROM [" + sheetName + "$]";
OleDbCommand myCommand = new OleDbCommand(strCommand, conn); //申请一个Data Adapter和数据库相连
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
myDataAdapter.SelectCommand = myCommand; //开始访问数据
conn.Open();
DataSet dataSet = new DataSet();
myDataAdapter.Fill(dataSet);
conn.Close();
//进行对应数据的导入
IDataTableImportExport dataTableImportExport = null;
if(!sheetInfo.dataIsHorizontal)
{
//申请团体保单导入对象
dataTableImportExport = new CompanyAppImportExport(classDataProvider);
}
else
{
//申请团保的个人清单导入对象
dataTableImportExport = new AppCoverageImportExport(classDataProvider);
} //导入数据
dataTableImportExport.ImportData(dataSet.Tables[0]);
} return true;
}
文件就相当于一个DataBase
每个sheet就象一个Table
而excel。在组织Database 和Table有一个我们看不见的结构当你把excel当作数据库。从另个一个数据库中到处数据时,那种看不见的结构就行成了。这时你又把excel当做数据库,把数据导入到另一个数据库时,是可以的。而当你自己随便在Excel中建立自己认为的"表",对不起 不能导入。因为那种看不见的结构不存在。sheet也并不是完全是Table。sheet 的名字根本不是表名。我曾在导入导出耗费了相当长的时间。你的连接串和我希望的差不多。
我当时用的是这样的
string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+sSourceFileName+
@";Extended Properties=""Excel 4.0;HDR=Yes;"";" ;
所以我认为。把excel当作一个媒介。用来导出导入在不同机器之间交换数据,是可以的。如果想单纯当作数据源,我感到到有点困难。我当时也就是做到这点就为止了。
可以看看别人是否有什么见解。