下面这个是我目前用的导出excel程序,结果发现第一列的数据竟然是编号,不是我数据库里的数据,这是为什么 ??请高手快来帮我看看!!急用.... public static void getExcel(DataTable dt ,string FileName)//导出Excel
        {
            //开始文件名
            
            FileStream objFileStream;
            StreamWriter objStreamWriter;
            string strLine = "";
            objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
            objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Default);            //插入标题
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                strLine = strLine + dt.Columns[i].ColumnName.ToString() + Convert.ToChar(9);
            }
            objStreamWriter.WriteLine(strLine);
            strLine = "";            //开始插入数据
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                strLine = strLine + (i + 1) + Convert.ToChar(9);
                for (int j = 1; j < dt.Columns.Count; j++)
                {
                    strLine = strLine + dt.Rows[i][j].ToString() + Convert.ToChar(9);
                }
                objStreamWriter.WriteLine(strLine);
                strLine = "";
            }
            objStreamWriter.Close();
            objFileStream.Close();
        }

解决方案 »

  1.   

    跟踪一下那个 dt看下dt.Rows[0][0]是什么值,最好还是直接用列名dt.Rows[Columns][j],以免维护麻烦
      

  2.   

    发一个我的转Excel程序。
    private void cmdExcel_Click(object sender, EventArgs e)
            {
                if (dgvBase.Rows.Count == 0)
                {
                    MessageBox.Show("没有要转出的调度日志记录");
                }
                else
                {
                    threadExcel = new Thread(ToExcel);
                    threadExcel.IsBackground = true;
                    threadExcel.Start();                
                }
            } /// 转出Excel
            /// </summary>
            private void ToExcel()
            {
                try
                {
                    Excel.Application excel = new Excel.Application();
                    if (excel == null)
                    {
                        MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
                        return;
                    }
                    excel.Visible = false;
                    excel.Application.Workbooks.Add(true);                
                    excel.Cells[1, 1] = " 运  输  调   度   日  志";
                    
                    for (int i = 0; i < dgvBase.ColumnCount; i++)
                    {
                        excel.Cells[2, i + 1] = dgvBase.Columns[i].HeaderText;
                    }
                    for (int i = 0; i < dgvBase.RowCount - 1; i++)
                    {
                        for (int j = 0; j < dgvBase.ColumnCount; j++)
                        {
                            if (dgvBase[j, i].ValueType == typeof(string))
                            {
                                excel.Cells[i + 3, j + 1] = dgvBase[j, i].Value;
                            }
                            else
                            {
                                excel.Cells[i + 3, j + 1] = dgvBase[j, i].Value.ToString();
                            }
                        }
                    }
                    //设定单元格边框\列的宽度\字体、对齐方式等
                    excel.get_Range(excel.Cells[1, 1], excel.Cells[1, 18]).Font.Size = 16;//字体大小
                    excel.get_Range(excel.Cells[1, 1], excel.Cells[1, 18]).Font.Bold = true;//粗体
                    excel.get_Range(excel.Cells[1, 1], excel.Cells[1, 18]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//对齐方式
                    excel.get_Range(excel.Cells[2, 1], excel.Cells[dgvBase.RowCount + 1, dgvBase.ColumnCount]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;                
                    excel.get_Range(excel.Cells[1, 1], excel.Cells[1, 18]).MergeCells = true;//合并单元格
                    excel.get_Range(excel.Cells[1, 1], excel.Cells[dgvBase.RowCount + 1, dgvBase.ColumnCount]).Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//边框样式
                    excel.get_Range(excel.Cells[2, 3], excel.Cells[dgvBase.RowCount + 2, 3]).ColumnWidth = 13;//列宽
                    excel.get_Range(excel.Cells[2,9],excel.Cells[dgvBase.RowCount+2,9]).ColumnWidth =18;
                    excel.get_Range(excel.Cells[2,10],excel.Cells[dgvBase.RowCount+2,10]).ColumnWidth =18;
                    excel.get_Range(excel.Cells[2,12],excel.Cells[dgvBase.RowCount+2,12]).ColumnWidth =18;
                    excel.get_Range(excel.Cells[2, 15], excel.Cells[dgvBase.RowCount + 2, 15]).ColumnWidth = 11;
                    excel.Visible = true;
                    //excel.Quit();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                finally
                {
                    threadExcel.Abort();
                    threadExcel.Join(5000);
                    GC.Collect();            }
            }
      

  3.   

        //EXCEL导出数据列表dt中含有StudentID,fStudentNo,fUserName等字段
        private void ExportToExcel(DataTable dt, string filename)
        {
            if (dt != null && dt.Rows.Count > 0)
            {
                HttpResponse resp;
                resp = Page.Response;
                resp.ContentEncoding = Encoding.GetEncoding("GB2312");
                resp.AppendHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
                StringWriter sw = new StringWriter();
                sw.WriteLine("学号\t姓名\t课程\t教学班");
                foreach (DataRow row in dt.Rows)
                {
                    string strlist = row["fStudentNo"].ToString() + "\t" + row["fUserName"].ToString() + "\t" + row["fCourseName"].ToString() + "\t" + row["fName"].ToString();
                    sw.WriteLine(strlist);
                }
                resp.Write(sw);
                resp.End();
            }
        }
      

  4.   

    把你的代码改了一下。现在第一列数据为table中的数据,你自己看一下吧。 public static void getExcel(DataTable dt ,string FileName)//导出Excel
            {
                //开始文件名
                
                FileStream objFileStream;
                StreamWriter objStreamWriter;
                string strLine = "";
                objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
                objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Default);            //插入标题
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    strLine = strLine + dt.Columns[i].ColumnName.ToString() + Convert.ToChar(9);
                }
                objStreamWriter.WriteLine(strLine);
                strLine = "";            //开始插入数据
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                   for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        strLine = strLine + dt.Rows[i][j].ToString() + Convert.ToChar(9);
                    }
                    objStreamWriter.WriteLine(strLine);
                    strLine = "";
                }
                objStreamWriter.Close();
                objFileStream.Close();
            }