前提:
存在DBF文件而且其字段有CELLNO STATUS CYCLICTIME STEP CURRENT VOLTAGE CAPACITY ENERGY STIME DTIME。当然这个可以根据个人的数据不同而改变。
主要代码:
//打开DBF文件
diaOpenFile.Filter = "Foxpro Table File(*.dbf)|*.dbf|All file(*.*)|*.*";
diaOpenFile.FileName = new string(new char[256]);
diaOpenFile.Multiselect = true;
//List<string> list = new List<string>();
int i = 0;
//string[] dbfFileNames = new string();
if (diaOpenFile.ShowDialog() == DialogResult.OK)
{
diaOpenFile.Filter = "Foxpro Table File(*.dbf)|*.dbf|All file(*.*)|*.*";
diaOpenFile.FileName = new string(new char[256]);
diaOpenFile.Multiselect = true;
//List<string> list = new List<string>();
int i = 0;
//string[] dbfFileNames = new string();
if (diaOpenFile.ShowDialog() == DialogResult.OK)
{
//遍历所选的文件
foreach (string j in diaOpenFile.FileNames)
{
string tableName = System.IO.Path.GetFileNameWithoutExtension(j);
string newTableName = tableName.Replace('-','0'); //"-"是非法字符, 用"0"替换
//获取DBF文件所有数据个DATASET
MyDBOperation.MyDBFOpen(System.IO.Path.GetDirectoryName(j));
DataSet ds= MyDBOperation.GetDataSet("select * from " + tableName);
MyDBOperation.MyDBClose();
//CELLNO STATUS CYCLICTIME STEP CURRENT VOLTAGE CAPACITY ENERGY STIME DTIME 初始化字段
double CELLNO=0;
string STATUS=null;
double CYCLICTIME=0;
double STEP = 0;
double CURRENT=0;
double VOLTAGE=0;
double CAPACITY=0;
double ENERGY =0;
string STIME=null;
double DTIME=0;
foreach (string j in diaOpenFile.FileNames)
{
string tableName = System.IO.Path.GetFileNameWithoutExtension(j);
string newTableName = tableName.Replace('-','0'); //"-"是非法字符, 用"0"替换
//获取DBF文件所有数据个DATASET
MyDBOperation.MyDBFOpen(System.IO.Path.GetDirectoryName(j));
DataSet ds= MyDBOperation.GetDataSet("select * from " + tableName);
MyDBOperation.MyDBClose();
//CELLNO STATUS CYCLICTIME STEP CURRENT VOLTAGE CAPACITY ENERGY STIME DTIME 初始化字段
double CELLNO=0;
string STATUS=null;
double CYCLICTIME=0;
double STEP = 0;
double CURRENT=0;
double VOLTAGE=0;
double CAPACITY=0;
double ENERGY =0;
string STIME=null;
double DTIME=0;
//建立新表
WindowsApplication1.MyAccessOperation.MyAccessOpen(@"D:/Thrive Liang/C#/Test.mdb");
//string tableWord = " (CELLNO1 char(8),STATUS1 char(8), CYCLICTIME1 char(8),STEP1 char(8),CURRENT1 char(8),VOLTAGE1 char(8), CAPACITY1 char(8), ENERGY1 char(8),STIME1 char(8), DTIME1 char(8))";
string tableWord = " (CELLNO double,STATUS char(8), CYCLICTIME double,STEP double,CURRENT1 double,VOLTAGE double, CAPACITY double, ENERGY double,STIME char(30), DTIME double)";
string sql = "create table " + newTableName + tableWord;
WindowsApplication1.MyAccessOperation.Execute(sql);
//给复制DBF数据给新表
for (int k = 0; k < ds.Tables[0].Rows.Count; k++)
{
CELLNO=double.Parse( ds.Tables[0].Rows[k][0].ToString());
STATUS=ds.Tables[0].Rows[1].ToString().Trim();
CYCLICTIME=double.Parse(ds.Tables[0].Rows[k][2].ToString());
STEP=double.Parse( ds.Tables[0].Rows[k][3].ToString());
CURRENT=double.Parse( ds.Tables[0].Rows[k][4].ToString());
VOLTAGE=double.Parse( ds.Tables[0].Rows[k][5].ToString());
CAPACITY=double.Parse( ds.Tables[0].Rows[k][6].ToString());
ENERGY =double.Parse( ds.Tables[0].Rows[k][7].ToString());
STIME =ds.Tables[0].Rows[k][8].ToString().Trim();
DTIME = double.Parse(ds.Tables[0].Rows[k][9].ToString());
string sqlData = "insert into " + newTableName + " VALUES( " + CELLNO + " , '" + STATUS + "' , " + CYCLICTIME + " , " + STEP + " , " + CURRENT + " , " + VOLTAGE + " , " + CAPACITY + " , " + ENERGY + " , '" + STIME + "' , " + DTIME + " )";
WindowsApplication1.MyAccessOperation.Execute(sqlData);
}
DTIME = double.Parse(ds.Tables[0].Rows[k][9].ToString());
string sqlData = "insert into " + newTableName + " VALUES( " + CELLNO + " , '" + STATUS + "' , " + CYCLICTIME + " , " + STEP + " , " + CURRENT + " , " + VOLTAGE + " , " + CAPACITY + " , " + ENERGY + " , '" + STIME + "' , " + DTIME + " )";
WindowsApplication1.MyAccessOperation.Execute(sqlData);
}