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

有个小工作需要,把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    }

67

你可能感兴趣的:(Excel)