技术开发 频道

从VFP数据库中导出数据到Excel


【IT168技术文档】

  有个小工作需要,把VFP中的数据导出到Excel中。

  VFP自带的导出到Html中,再使用Excel打开,当数据量小的时候没有问题,数据量一大,就出现错误,终止导出操作。

  如果没有Memo字段,可以使用WinHex直接修改dbf中的值,就可以直接使用Excel打开了,但是我需要Memo字段。



  我没有找到什么好的方法,有的话,不妨留言给我,谢谢!



  最终写了个简单的程序,
1 protected void Page_Load(object sender, EventArgs e) 2 { 3 System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection(); 4 string table = @"C:\test\aa.DBF"; 5 string connStr=@"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + table + ";Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO"; 6 7 conn.ConnectionString = connStr; 8 conn.Open(); 9 string sql = ""; 10 sql = @"select * from " + table + " order by dpid "; 11 OdbcDataAdapter da = new OdbcDataAdapter(sql,conn); 12 DataTable dt = new DataTable("chkdkp"); 13 da.Fill(dt); 14 conn.Close(); 15 16 //dt.WriteXml(@"c:\aa.xml"); 17 18 int rowCount = dt.Rows.Count; //DataTable行数 19 int colCount = dt.Columns.Count; //DataTable列数 20 21 string filename=@"c:\testfile.csv"; 22 //打开文件并显示其内容 23 24 FileStream fs = new FileStream(filename,FileMode.OpenOrCreate,FileAccess.Write); 25 StreamWriter m_streamWriter = new StreamWriter(fs); 26 string temp = ""; 27 try 28 { 29 30 //其实这里直接用SmartExcel会更好 31 m_streamWriter.Flush(); 32 // 使用StreamWriter来往文件中写入内容 33 m_streamWriter.BaseStream.Seek(0,SeekOrigin.Begin); 34 // 把richTextBox1中的内容写入文件 35 for (int i = 1; i < rowCount + 1; i++) 36 { 37 temp = ""; 38 for (int j = 1; j < colCount + 1; j++) 39 { 40 temp = temp + "^" + dt.Rows[i - 1][j - 1].ToString(); 41 } 42 temp = temp.Replace("\r\n", ""); 43 temp = temp.Replace("\r", ""); 44 temp = temp.Replace("\n", ""); 45 46 m_streamWriter.Write(temp); 47 m_streamWriter.WriteLine(); 48 } 49 //关闭此文件 50 m_streamWriter.Flush(); 51 52 } 53 catch (IOException ee) 54 { 55 Console.WriteLine(ee.Message); 56 } 57 58 finally 59 { 60 if (m_streamWriter != null) 61 m_streamWriter.Close(); 62 if(fs != null) 63 fs.Close(); 64 } 65 66 }
0
相关文章