当前位置:编程学习 > C#/ASP.NET >>

excel 导入 dataset 少了一列

excel 是有 英文的内容的  但是 fill 到DS 里面 调试就没有这个列了 请问 到底是怎么问回事 这个问题 我纠结 好几天了



.net excel 数据丢失 --------------------编程问答-------------------- 没有哪一列?是不是这列都没数据? --------------------编程问答-------------------- 逐一插入每一列 --------------------编程问答-------------------- 这个是excel 的 数据 和 上边的 是一样的性质 只是没人不一样  DS 




--------------------编程问答-------------------- userlist.Tables[0].Columns.Count的值是多少?是不是少列?? --------------------编程问答-------------------- excel里“单元格格式”里设置成“文本”试下。 --------------------编程问答-------------------- 看下是不是 exl的那列的第一个单元格是空的  没有值的? --------------------编程问答-------------------- 不是 空的   一共4列  --------------------编程问答-------------------- 怎么逐个 插入啊
给个例子 --------------------编程问答-------------------- 请问那一列的格式和其它列的格式是一样的吗?
如果不一样请设置成一样的然后在试试 --------------------编程问答-------------------- 一样的 就是列 是英文的 --------------------编程问答-------------------- 我发现了一个问题 不知道 有没有 帮助  我把原件 复制一份 把复件打开 什么也不改 保存 在执行 这个文件 就好了 --------------------编程问答-------------------- 求高手 解答 --------------------编程问答-------------------- 复制粘贴。。 --------------------编程问答-------------------- 少一列就+1 循环的时候。 --------------------编程问答-------------------- 可能是你的循环少了,+1试试~ --------------------编程问答-------------------- 哪里有循环 啊  那个foreach 是循环行的  
我讲下我的程序吧 
这个excel 的构成是:
第一个sheet 是一个列表 包含所有人的简单信息 
从第二个sheet开始 才是每个人的详细信息。
userList 是第一个sheet的 列表 他循环行 为了捕捉到姓名等信息 
也就是sheetname 。通过这个name 来查询 所以sheet里面是该名字的这个页 然后 通过 fill 方法 保存到 ds里面 ,
现在问题来了 为什么 ds里面 只有4列 应该是5列的  少了一个 英文的 内容  --------------------编程问答--------------------
引用 14 楼 jess0224 的回复:
少一列就+1 循环的时候。

LZ这个没有循环,它是把xls 做为源,进行直接查询的,
这种情况一般都是由xls里格式引起的(你xls里进行了格式设置),你往这方面检查下 --------------------编程问答--------------------
引用 17 楼 lzxue1989 的回复:
引用 14 楼 jess0224 的回复:少一列就+1 循环的时候。
LZ这个没有循环,它是把xls 做为源,进行直接查询的,
这种情况一般都是由xls里格式引起的(你xls里进行了格式设置),你往这方面检查下


如果能用程序 修改到这个格式设置 再好不过来 --------------------编程问答-------------------- 没人能解决吗? --------------------编程问答-------------------- 连接字符串问题,有个属性可以强制转换的 --------------------编程问答-------------------- 第一列会被当成标题~

你看看Table的 ColumnName就知道了~ --------------------编程问答-------------------- 你肯定是没有加入列的时候出问题了,要不是就是你读取数据的时候出问题了,一点一点的调试看看,看看走到哪里出错了,这个东西,靠自己调试的比较快。 --------------------编程问答--------------------
引用 21 楼 moonwrite 的回复:
第一列会被当成标题~

你看看Table的 ColumnName就知道了~

+1   连接字符串 --------------------编程问答-------------------- IMEX有3个值:当IMEX=2 时,EXCEL文档中同时含有字符型和数字型时,比如第C列有3个值,2个为数值型 123,1个为字符型 ABC,当导入时,页面不报错了,但库里只显示数值型的123,而字符型的ABC则呈现为空值。当IMEX=1时,无上述情况发生,库里可正确呈现 123 和 ABC. --------------------编程问答-------------------- 用NPOI来转什么都好
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using System.Web;
using NPOI;
using NPOI.HPSF;
using NPOI.HSSF;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.POIFS;
using NPOI.Util; 

public static DataTable Import(Stream s)
        {
            DataTable dt = new DataTable();

            HSSFWorkbook hssfworkbook;
            hssfworkbook = new HSSFWorkbook(s);
            HSSFSheet sheet = hssfworkbook.GetSheetAt(0);
            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

            HSSFRow headerRow = sheet.GetRow(0);
            int cellCount = headerRow.LastCellNum;

            for (int j = 0; j < cellCount; j++)
            {
                HSSFCell cell = headerRow.GetCell(j);
                dt.Columns.Add(cell.ToString());
            }

            for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
            {
                HSSFRow row = sheet.GetRow(i);
                DataRow dataRow = dt.NewRow();

                for (int j = row.FirstCellNum; j < cellCount; j++)
                {
                    if (row.GetCell(j) != null)
                        dataRow[j] = row.GetCell(j).ToString();
                }

                dt.Rows.Add(dataRow);
            }
            return dt;
        }   

配合上传控件,当然也可以直接打开一个Excle得到Stream
DataTable dt = Galsun.Common.NOPIHelper.Import(FileUpload1.PostedFile.InputStream); --------------------编程问答--------------------
引用 25 楼 liuchaolin 的回复:
用NPOI来转什么都好
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using System.Web;
using NPOI;
using NPOI.HPSF;
using NPOI.HSSF;……


项目 已经写好了 我只是 帮忙该bug  尽量不动源代码 --------------------编程问答-------------------- 新建个xls把资料复制过去就可以
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,