当前位置: 代码迷 >> C# >> 在datatable中标题栏上边再加一个标题
  详细解决方案

在datatable中标题栏上边再加一个标题

热度:98   发布时间:2016-05-05 03:16:29.0
在datatable中标题栏上面再加一个标题
我想在datatable中已经添加好的标题栏上再添加一个标题,我想在 ModelNoAll PanelNameAll SPNoAll 这一行上再加一个标题,实现这个效果,因为我要把datatable写入EXCEL,

 WriteHeadToSheet(arrCnNames);
                 
               
                workbook.Save();


                string strCnNames = "";
                string strValues = "";



                for (int i = 0; i < arrCnNames.Count; i++)
                {
                    strCnNames += arrCnNames[i].ToString() + " , ";
                }
                strCnNames = strCnNames.Trim().TrimEnd(',');

                string strExcel = "INSERT INTO [{0}$] ({1}) VALUES ({2})";

                conn.Open();

                foreach (DataRow dr in SourceTable.Rows)
                {
                  

                    for (int i = 0; i < SourceTable.Columns.Count; i++)
                    {
                        strValues += " '" + dr[i].ToString() + "', ";
                    }

                   
                    strValues = strValues.Trim().TrimEnd(',');


                    comm = new OleDbCommand(string.Format(strExcel, mstrCurrWorksheetName, strCnNames, strValues), conn);
                    comm.ExecuteNonQuery();

                    strValues = "";

                }
这个是我写入EXCEL的代码,请问各位有什么好办法在写入EXCEL的时候多写一行标题吗?
谢谢了,我是新手,尽量说具体点
------解决思路----------------------
所以你WriteHeadToSheet()的时候要从2开始
for (int i = 0; i < arrHead.Count; i++)
             {
                 WriteCell(2, i + 1, arrHead[i].ToString());
             }
你在  WriteCell(1, 4, "要加的标题"); 的时候写在第一行
而WriteHeadToSheet方法还是从第一行开始写的,就覆盖掉了
------解决思路----------------------


        public static void ExcelSave(System.Data.DataTable tbl)
        {
            if (tbl == null)
            {
                MessageBox.Show("数据源为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;            
            }

            int tbl_rc = tbl.Rows.Count;
            if (tbl_rc <= 0)
            {
                MessageBox.Show("缺少可以导出的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            string saveFileName = string.Empty;
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.DefaultExt = "xlsx";
            sfd.Filter = "Excel文件
------解决思路----------------------
*.xlsx";
            sfd.FileName = "sheet";
            sfd.ShowDialog();
            saveFileName = sfd.FileName;
            if (saveFileName.IndexOf(".") < 0)
            {
                return;
            }
            Microsoft.Office.Interop.Excel.Application myExcelApp = new Microsoft.Office.Interop.Excel.Application();
            if (myExcelApp == null)
            {
                MessageBox.Show("无法创建Excel,可能您未安装Excel", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            Workbooks workbooks = myExcelApp.Workbooks;
            Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
            Sheets sheets = workbook.Worksheets;
            Worksheet worksheet = (Worksheet)sheets.get_Item(1);
            Range range;
            //object oMis = System.Reflection.Missing.Value;
            
            range = worksheet.Range[worksheet.Cells[1, 1], worksheet.Cells[tbl_rc + 2, tbl.Columns.Count]];
            range.NumberFormatLocal = "@";
            range.Columns.AutoFit();
            range.RowHeight = 18;
            range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;


            //写入标题
            worksheet.Cells[1, 1] = "标题";

            //写入字段名
            for (int i = 0; i < tbl.Columns.Count; i++)
            {
                worksheet.Cells[2, i + 1] = tbl.Columns[i].Caption.Trim();
            }
            //写入内容           
            for (int r = 0; r < tbl_rc; r++)
            {
                for (int i = 0; i < tbl.Columns.Count; i++)
                {
                    string a = tbl.Rows[r][i].ToString().Trim();
                    worksheet.Cells[r + 3, i + 1] = a;
                }
            }
            //保存
            if (saveFileName != string.Empty)
            {
                try
                {
                    workbook.Saved = true;
                    workbook.SaveCopyAs(saveFileName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                MessageBox.Show("文件名不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            myExcelApp.Visible = false;
            myExcelApp.Quit();
            GC.Collect();//垃圾回收
        }





这个需要机器上安装有OFFICE才可以导出.
  相关解决方案