weixin_38424791
2017-12-18 09:45
采纳率: 75%
浏览 2.5k

c#导入Excel做一个列名的映射

在导入Excel的时候由于列名不同,需要做一个映射,有提示说在App.config里做配置,
但是不会啊,有没有大神求教

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • blownewbee 2017-12-18 16:19
    已采纳

    在app.config里面存入sql
    类似
    select excel里面的列1 as 你要的列名1, excel里面的列2 as 你要的列名2 ... from sheet1
    用oledb读取执行,查询数据

    C#读取app.config参考:http://blog.csdn.net/kone0611/article/details/51011185

    点赞 评论
  • yechengy 2017-12-18 09:54

    个人推荐:用npoi来弄,你可以上百度查怎么使用,这个很好用,不像其他的那样需要本机装有office来能使用,实在不行可以找我,我前段时间在网上找了,敲了个Demo

    点赞 评论
  • 创可贴男孩 2017-12-18 10:19

    如果楼主是想把Excel的数据提取出来的话推荐还是用NPOI,最近我也在用这个,功能特别强大
    if (string.IsNullOrEmpty(fudExcel.FileName))
    {
    ZWL.Common.MessageBox.Show(this, "请选择上传文件!");
    return;
    }
    string extension = fudExcel.FileName.Substring(fudExcel.FileName.LastIndexOf('.'));

            if ((extension == ".xls") || (extension == ".xlsx"))
            {
    
            }
            else
            {
                ZWL.Common.MessageBox.Show(this, "上传文件扩展必须是(xls/xlsx)文件!");
                return;
            }
    
            string filepath = string.Empty;
            // 上传到服务器临时目录下
            string tempdir = Server.MapPath("/TempExcelUp/");
            string filename = Guid.NewGuid() + extension;
            filepath = tempdir + filename;
            // 保存
            fudExcel.SaveAs(filepath);
    
            //调试使用
            //string filename = "temp.xlsx";
            //filepath="G:/maje/HaiXinKongTiaoWenJuan/KongTiaoPingTai/Web/TempExcelUp/temp.xlsx";
    
            FileStream fs = null;
            IWorkbook workbook = null;
            ISheet sheet = null;
    
            using (fs = File.OpenRead(filepath))
            {
                // 2007版本  
                if (extension == ".xlsx")
                    workbook = new XSSFWorkbook(fs);
                // 2003版本  
                else if (extension != ".xls")
                    workbook = new HSSFWorkbook(fs);
    
                if (workbook != null)
                {
    
                    //需要手工修改选择哪一个sheet页面
                    //质量保证审核
                    if (txtDanJuLeiXingBianHao.Text.Trim() == "4")
                    {
                        sheet = workbook.GetSheetAt(5);//读取第一个sheet,当然也可以循环读取每个sheet  
                    }
                    //产品专业评审类目管理
                    if (txtDanJuLeiXingBianHao.Text.Trim() == "5")
                    {
                        sheet = workbook.GetSheetAt(6);//读取第一个sheet,当然也可以循环读取每个sheet  
                    }
    
                    //产品专业评审类目管理
                    if (txtDanJuLeiXingBianHao.Text.Trim() == "8")
                    {
                        sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheet  
                    }
                                         for (int m = 2; m < rowCount; m++)//从第三行开始
                            {
                                excelRow = sheet.GetRow(m);//读取当前行
                                strTemp= excelRow.GetCell(0).ToString();
    
                                //如果文本框内容为“NO.”表示是每一大类的开始,第3列即为大类
                                if (strTemp == "NO.")
                                {
                                    strDaLei= excelRow.GetCell(2).ToString().Split('、');
                                    strDaLei[0] = strDaLei[0].Trim();
                                    strDaLei[1] = strDaLei[1].Trim();
                                    //TextBox1.Text += strDaLei[0] + strDaLei[1]+"==";
                                }
                                                     }
                            }
    
    
    

    这个是我最近用NPOI写的一个导入的实例
    楼主可以借鉴借鉴

    点赞 评论
  • weixin_38424791 2017-12-19 08:36

    对了,我是用winform做的,我想到一个办法,就是在点击导入按钮后,弹出一个框框,就像数据库导入Excel选择映射关系一样,
    将导入的所有列名显示在一个listview上,然后单击目标列图片说明
    显示自定义的列名在里面,选择对应的列映射,图片说明
    这样就对应起来了

    点赞 评论

相关推荐 更多相似问题