zoukankan      html  css  js  c++  java
  • Excel导出DataTable

          由DataTable表导出Excel的简单方法,记录以免遗忘。

            private void exportTab(DataTable db)
            {
                try
                {
                    DataRow[] dr = db.Select();
                    string columnName = null; 

                    Excel.Application app = new Excel.Application();
                    app.Visible = false;
                    Excel.Workbooks workBooks = app.Workbooks;
                    Excel.Workbook workBook = workBooks.Add(tempLatePath);
                    Excel.Sheets xslSheets = workBook.Worksheets;
                    Excel._Worksheet workSheet = (Excel._Worksheet)xslSheets.get_Item(1);

                    outFileName = outPath.Substring(outPath.LastIndexOf("\") + 1);
                    //workSheet.Name = outFileName;

                    object[,] m_objectData = new object[db.Rows.Count + 1, db.Columns.Count - 1];
                    Excel.Range m_objRange = workSheet.get_Range("A1", this.missing);
                    m_objRange = m_objRange.get_Resize(db.Rows.Count + 1, db.Columns.Count - 1);

                    Excel.Font m_objFont = m_objRange.Font;
                    m_objFont.Bold = false;

                    for (int i = 0; i < workSheet.UsedRange.Columns.Count; i++)
                    {
                        m_objectData[0, i] = workSheet.Cells[1, i + 1].Text;
                    }

                    for (int i = 0; i < db.Rows.Count; i++)
                    {
                        for (int j = 0; j < db.Columns.Count - 1; j++)
                        {
                            columnName = m_objectData[0, j].ToString();
                            m_objectData[i + 1, j] = dr[i][columnName].ToString();
                        }
                    }

                    m_objRange.Value2 = m_objectData;
                    workBook.SaveAs(this.outPath, this.missing, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange,
                      this.missing, this.missing, this.missing, this.missing, this.missing);
                    workBook.Close(null, null, null);
                    app.Workbooks.Close();
                    app.Application.Quit();
                    app.Quit();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                    workSheet = null;
                    workBook = null;
                    app = null;
                    commonLib.setbusy(false);
                    MessageBox.Show("导出成功!");
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

  • 相关阅读:
    Java n个线程轮流打印数字的问题
    【我所认知的BIOS】—&gt; uEFI AHCI Driver(6) AtaAtapiPassThruSupported的局部变量们
    设备树学习之(二)点灯【转】
    设备树学习之(一)GPIO中断【转】
    S5PV210开发板 VGA测试【转】
    Linux VGA驱动移植实验【转】
    略过天涯 深入浅出VGA和DVI接口【转】
    基于FPGA的VGA可移植模块终极设计【转】
    字符串函数---strcmp()与strncmp()详解及实现【转】
    关于内存中栈和堆的区别(非数据结构中的堆和栈,区别)
  • 原文地址:https://www.cnblogs.com/qingwufeiyang/p/3991024.html
Copyright © 2011-2022 走看看