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

本文介绍了一种将VFP中的数据,包括Memo字段,导出至Excel的方法。通过编写程序利用Odbc连接,从VFP的DBF文件读取数据,并转换为CSV格式,以解决大量数据导出时的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://www.cnblogs.com/jeffersyuan/archive/2007/11/11/955952.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值