在导入xls表时,在xls表格里某列(如列头为姓名的一列)能不能使其添加到listview控件中指定的一个列头下面?也就是说,xls表格中不管这一列在什么位子,导入的时候始终能添加到listview中指定的列头下,能实现吗?

解决方案 »

  1.   

    列头是怎么定位的呢?就是listview怎么定位某个列头?表格里取我会,就这列头不知道怎么定位
      

  2.   

    问一下!xls能添加到listview中吗?
    是不是应该先将数据取出放到数据源中(DataTable)
    然后绑定不就可以了。
    你还管他列在哪里干吗
      

  3.   

         private static string ProcessExcel(IList<ProblemCodeRawdataInfo> list, string path, string virtualPath)
            {
                string timeFlag = DateTime.Now.ToFileTime().ToString();
                string dirStr = path + DateTime.Now.ToFileTime().ToString();
                System.IO.Directory.CreateDirectory(dirStr);
                int fileNum = 1;
                //不通过OLE生成excel文件的方法          
                for (int index = 0; index < list.Count; index++)
                {
                    ProblemCodeExcel excel = new ProblemCodeExcel(GenFileName(dirStr + "\\"));
                    excel.BeginWrite();
                    excel.WriteHeader();
                    Console.WriteLine("正在生成第" + fileNum.ToString() + "个文档.....");
                    for (ushort row = 1; row < ushort.MaxValue && index < list.Count; row++, index++)
                    {
                        if (list[index] != null)
                        {
                            excel.WriteString(row, 0, list[index].CreateDate);
                            excel.WriteString(row, 1, list[index].CaseId);
                            excel.WriteString(row, 2, list[index].Country);
                            excel.WriteString(row, 3, list[index].Datasource);
                            excel.WriteString(row, 4, list[index].Engineer);
                            excel.WriteString(row, 5, list[index].Model);
                            excel.WriteString(row, 6, list[index].Problem);
                            excel.WriteString(row, 7, list[index].ProblemCode);
                            excel.WriteString(row, 8, list[index].ProblemDesc);
                            excel.WriteString(row, 9, list[index].ProblemType);
                            excel.WriteString(row, 10, list[index].ProblemTypeDesc);
                            excel.WriteString(row, 11, list[index].ProductType);
                            excel.WriteString(row, 12, list[index].Reply);
                            excel.WriteString(row, 13, list[index].Series);
                            excel.WriteString(row, 14, list[index].Server);
                            excel.WriteString(row, 15, list[index].Subject);
                            excel.WriteString(row, 16, list[index].SubSeries);
                        }
                        else
                            break;                }
                    Console.WriteLine("生成成功!");
                    excel.EndWrite();
                    index--;
                    fileNum++;
                }            ZipDAO dao = new ZipDAO(dirStr);
                dao.ZipFold();
                DeleteFile(dirStr);
                Console.WriteLine("处理完毕");
                Thread.Sleep(1000);
                return virtualPath + timeFlag + ".rar";
            }
    public class ExcelWriter
        {
            System.IO.FileStream _wirter;
            public ExcelWriter(string strPath)
            {
                _wirter = new System.IO.FileStream(strPath, System.IO.FileMode.OpenOrCreate);
            }
            /// <summary>
            /// 写入short数组
            /// </summary>
            /// <param name="values"></param>
            private void _writeFile(ushort[] values)
            {
                foreach (ushort v in values)
                {
                    byte[] b = System.BitConverter.GetBytes(v);
                    _wirter.Write(b, 0, b.Length);
                }
            }
            /// <summary>
            /// 写文件头
            /// </summary>
            public void BeginWrite()
            {
                _writeFile(new ushort[] { 0x809, 8, 0, 0x10, 0, 0 });
            }
            /// <summary>
            /// 写文件尾
            /// </summary>
            public void EndWrite()
            {
                _writeFile(new ushort[] { 0xa, 0 });
                _wirter.Close();
            }
            /// <summary>
            /// 写一个数字到单元格x,y
            /// </summary>
            /// <param name="x"></param>
            /// <param name="y"></param>
            /// <param name="value"></param>
            public void WriteNumber(ushort x, ushort y, double value)
            {
                _writeFile(new ushort[] { 0x203, 14, x, y, 0 });
                byte[] b = System.BitConverter.GetBytes(value);
                _wirter.Write(b, 0, b.Length);
            }
            /// <summary>
            /// 写一个字符到单元格x,y
            /// </summary>
            /// <param name="x"></param>
            /// <param name="y"></param>
            /// <param name="value"></param>
            public void WriteString(ushort x, ushort y, string value)
            {
                byte[] b = System.Text.Encoding.UTF8.GetBytes(value);
                _writeFile(new ushort[] { 0x204, (ushort)(b.Length + 8), x, y, 0, (ushort)b.Length });
                _wirter.Write(b, 0, b.Length);
                
            }
        }