现在的位置: 首页 > 综合 > 正文

Excel 导入到数据库,正解

2013年01月31日 ⁄ 综合 ⁄ 共 3481字 ⁄ 字号 评论关闭

        最近做了个小的条码,涉及要将Excel中的数据读取出来并以条码的格式显示

        实验目的:打印条码标签以供标识,扫描

        实验点:1.Excel 的读取

                         2.条码图形绘制

                         3.打印

         点一:Excel 导入:

        string       strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 5.0;HDR=NO;IMEX=1'";
        OleDbConnection conn = new OleDbConnection(strConn);
        OleDbDataAdapter oada = new OleDbDataAdapter("select * from  [s$]", strConn);
        DataSet ds = new DataSet();
        oada.Fill(ds);

        注意 strConn 后面Extended Properties='Excel 5.0;HDR=NO;IMEX=1'部分,首先,是用‘’引起来否则可能会出现异常:“找不到可安装的ISAM ”。

                  HDR=NO 代表不包含第一行数据,Yes 代表包含第一行数据《是NO 不是False 》

                  IMEX 的数值有:“0,1,2”三种,0 代表“当前模式为汇出模式”,这个模式开启的Excel 档案只能用来做“写入”用途;

                                                                                 1代表“当前的模式为汇入模式”,这个模式开启的Excel档案只能用来做“读取”用途;

                                                                                 2代表“连结模式”,这个模式开启的Excel档案可同时支援“读取”与 “写入”用途;

         点二:条码显示

                       Code39模式,代码就不在此显示了

                         关键 

        public ImgDrawing()
        {
            m_Code39.Add("A", "1101010010110");
            m_Code39.Add("B", "1011010010110");
            m_Code39.Add("C", "1101101001010");
            m_Code39.Add("D", "1010110010110");
            m_Code39.Add("E", "1101011001010");
            m_Code39.Add("F", "1011011001010");
            m_Code39.Add("G", "1010100110110");
            m_Code39.Add("H", "1101010011010");
            m_Code39.Add("I", "1011010011010");
            m_Code39.Add("J", "1010110011010");
            m_Code39.Add("K", "1101010100110");
            m_Code39.Add("L", "1011010100110");
            m_Code39.Add("M", "1101101010010");
            m_Code39.Add("N", "1010110100110");
            m_Code39.Add("O", "1101011010010");
            m_Code39.Add("P", "1011011010010");
            m_Code39.Add("Q", "1010101100110");
            m_Code39.Add("R", "1101010110010");
            m_Code39.Add("S", "1011010110010");
            m_Code39.Add("T", "1010110110010");
            m_Code39.Add("U", "1100101010110");
            m_Code39.Add("V", "1001101010110");
            m_Code39.Add("W", "1100110101010");
            m_Code39.Add("X", "1001011010110");
            m_Code39.Add("Y", "1100101101010");
            m_Code39.Add("Z", "1001101101010");
            m_Code39.Add("0", "1010011011010");
            m_Code39.Add("1", "1101001010110");
            m_Code39.Add("2", "1011001010110");
            m_Code39.Add("3", "1101100101010");
            m_Code39.Add("4", "1010011010110");
            m_Code39.Add("5", "1101001101010");
            m_Code39.Add("6", "1011001101010");
            m_Code39.Add("7", "1010010110110");
            m_Code39.Add("8", "1101001011010");
            m_Code39.Add("9", "1011001011010");
            m_Code39.Add("+", "1001010010010");
            m_Code39.Add("-", "1001010110110");
            m_Code39.Add("*", "1001011011010");
            m_Code39.Add("/", "1001001010010");
            m_Code39.Add("%", "1010010010010");
            m_Code39.Add("contentquot;","1001001001010");
            m_Code39.Add(".", "1100101011010");
            m_Code39.Add(" ", "1001101011010");
        }
    3. 打印:

                  设计方案有二,一个是动态添加图片控件,通过table来控制图片控件显示的位置,然后用微软自带的网页打印,这样方便一点;另一个是将图片以二进制格式存入数据库,然后通过水晶报表来绑定实现,这样可能涉及图片的存取以及读取相对稍微麻烦一点;

                    测试过程中遇到一个小问题,本来打算用水晶报表来实现,DataSet 都配置好了,后来嫌麻烦,就换方案了,然后DataSet 没有删除,结果在读取Excel 绑定的时候ds.table[0] 始终没有数据,后来试了一下ds.table[1] 这个时候有数据了,后来整理程式时候把DataSet 删除了,程序报错,又改回成ds.tables[0]才可以,可能默认填充不一样吧;

                  心得体会:凡事只有亲自做了之后才知道有很多细节要注意!!技术有待加强,革命尚未成功,同志依然需努力哇!!

 

 

抱歉!评论已关闭.