现要将Access中的数据查询出来然后通过c#语言以Excel表形式导出,请问该怎么做啊,有没有源码例子让小弟看下...

解决方案 »

  1.   

    /// <summary>
            /// 将ListView的内容写入Excel表中
            /// </summary>
            /// <param name="LView">ListView控件</param>
            /// <param name="strTitle">内容的标题</param>
            public void UWriteListViewToExcel(ListView LView, string strTitle)
            {
                try
                {
                    Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
                    object m_objOpt = System.Reflection.Missing.Value;
                    Microsoft.Office.Interop.Excel.Workbooks ExcelBooks = (Microsoft.Office.Interop.Excel.Workbooks)ExcelApp.Workbooks;
                    Microsoft.Office.Interop.Excel._Workbook ExcelBook = (Microsoft.Office.Interop.Excel._Workbook)(ExcelBooks.Add(m_objOpt));
                    Microsoft.Office.Interop.Excel._Worksheet ExcelSheet = (Microsoft.Office.Interop.Excel._Worksheet)ExcelBook.ActiveSheet;                //设置标题
                    ExcelApp.Caption = strTitle;
                    ExcelSheet.Cells[1, 1] = strTitle;
                                    //写入列名
                    for (int i = 1; i <= LView.Columns.Count; i++)
                    {
                        ExcelSheet.Cells[2, i] = LView.Columns[i - 1].Text;
                    }                ExcelSheet.Columns.ColumnWidth = 16;
                    //((Excel.Range)ExcelSheet.Columns["C", Type.Missing]).ColumnWidth = 4;     //   将第三列列宽设置成4
          
                    //写入内容
                    progressBar1.Maximum = LView.Items.Count;
                    for (int i = 3; i < LView.Items.Count + 3; i++)
                    {
                        ExcelSheet.Cells[i, 1] = LView.Items[i - 3].Text;
                        for (int j = 2; j <= LView.Columns.Count; j++)
                        {
                            ExcelSheet.Cells[i, j] = LView.Items[i - 3].SubItems[j - 1].Text;
                        }
                        progressBar1.Value = i-2;
                    }
                    progressBar1.Visible = false;
                    //显示Excel
                    ExcelApp.Visible = true;
                }
                catch (SystemException e)
                {
                    MessageBox.Show(e.ToString());
                }
            }这个是将listview内容导出到EXCEL,楼主可以先将查询到的数据导入到listview里面,然后调用这个函数来写EXCEL文件,我所有程序中用到导出EXCEL功能地方我都是调用这个函数来写的,放心,我已经测试过了。
      

  2.   

    private void button1_Click(object sender, EventArgs e)
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "Execl   files   (*.xls)|*.xls";
                saveFileDialog.FilterIndex = 0;
                saveFileDialog.RestoreDirectory = true;
                saveFileDialog.CreatePrompt = true;  //提示是否创建(*****).xls文件
                saveFileDialog.Title = "导出Excel文件到";            // saveFileDialog.ShowDialog();
                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    Stream myStream;
                    myStream = saveFileDialog.OpenFile();
                    StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));                string str = "";
                    try
                    {
                        //写标题     
                        for (int i = 0; i < dataGridView1.ColumnCount; i++)
                        {
                            if (i > 0)
                            {
                                str += "\t";
                            }
                            str += dataGridView1.Columns[i].HeaderText;
                        }                    sw.WriteLine(str);
                        //写内容   
                        for (int j = 0; j < dataGridView1.Rows.Count - 1; j++)
                        {
                            string tempStr = "";
                            for (int k = 0; k < dataGridView1.Columns.Count; k++)
                            {
                                if (k > 0)
                                {
                                    tempStr += "\t";
                                }
                                tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
                            }
                            sw.WriteLine(tempStr);
                        }                    MessageBox.Show("导出数据成功");
                        sw.Close();
                        myStream.Close();                }
                    catch (Exception ee)
                    {
                        MessageBox.Show(ee.Message);
                        return;
                    }
                    finally
                    {
                        sw.Close();
                        myStream.Close();
                    }
                }
            }  我就是用的这个,只需要: using System.IO;  放一个SaveFileDialog控件 OK  不需要添加任何引用
      

  3.   

    想请教2楼那个dataGridView1是什么?
      

  4.   

    DataGridView 是显示数据的控件啊 VS2005 Winform开发才有这个控件   VS2003是DataGrid
      

  5.   

    2楼的答案,对
    我没有导过listview,借鉴一下
      

  6.   

    Winform 开发
    首先 把从数据库查询出来的数据绑定给 DataGridView控件  然后在用上面的方法ASP.NET   开发的话  也差不多 只是绑定数据的控件名字不一样 
    不要SaveFileDialog控件 因为工具箱中  HTML控件组中有 Input(file) 控件 点击右键  作为服务器控件运行 就OK 再用上面的方法
      

  7.   

    先把数据填充到dataset里,然后倒入到excel里就可以了
      

  8.   

    可以使用ComponentOne组件,也可以使用如下方法,没有版本限制:using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Reflection;namespace ExcelOpt
    {
        /// <summary>
        /// Excel后期绑定的操作类
        /// </summary>
        public class Application
        {
            object m_ExcelApp;
            public Application()
            {
                Type objExcelType = Type.GetTypeFromProgID("Excel.Application");
                if (objExcelType == null)
                {
                    throw new Exception("未发现Excel程序");
                }
                m_ExcelApp = Activator.CreateInstance(objExcelType);
                if (m_ExcelApp == null)
                {
                    throw new Exception("启用Excel程序失败!");
                }
            }
            public bool Visible
            {
                get
                {
                    object objVisible =
                        m_ExcelApp.GetType().InvokeMember("Visible", BindingFlags.GetProperty, null, m_ExcelApp, null);
                    if (objVisible is Boolean)
                        return (bool)objVisible;
                    else
                        throw new Exception("调用方法失败!");
                }
                set
                {
                    object[] Parameters = new object[1] { value };
                    m_ExcelApp.GetType().InvokeMember("Visible", BindingFlags.SetProperty, null, m_ExcelApp, Parameters);
                }
            }        public Workbooks Workbooks
            {
                get
                {
                    object workbooks = m_ExcelApp.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, m_ExcelApp, null);
                    if (workbooks == null)
                        throw new Exception("查询工作簿时失败!");
                    else
                        return new Workbooks(workbooks);
                }
            }
        }    public class Workbooks
        {
            private object m_Workbooks;
            private string m_ExcelFileName;        public Workbooks(object workbooks)
            {
                m_Workbooks = workbooks;
            }        public void Open(string ExcelFileName)
            {
                try
                {
                    m_ExcelFileName = ExcelFileName;
                    object[] Parameters = new object[1] { ExcelFileName };
                    m_Workbooks.GetType().InvokeMember("Open", BindingFlags.InvokeMethod, null, m_Workbooks, Parameters);            }
                catch (Exception err)
                {
                    throw err;
                }
            }        public Workbook this[int index]
            {
                get
                {
                    object[] Parameters = new object[1]{index };
                    object workbook = m_Workbooks.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, m_Workbooks, Parameters);
                    if (workbook == null)
                        throw new Exception("获取工作薄时出现错误!");
                    else
                        return new Workbook(workbook);
                }
            }
        }    public class Workbook
        {
            private object m_Workbook;
            public Workbook(object workbook)
            {
                m_Workbook = workbook;
            }        public Worksheets Worksheets
            {
                get
                {
                    object worksheets = m_Workbook.GetType().InvokeMember("Worksheets", System.Reflection.BindingFlags.GetProperty, null, m_Workbook, null);
                    if (worksheets == null)
                        throw new Exception("获取工作表集合时失败!");
                    else
                        return new Worksheets(worksheets);
                }
            }
            public void SaveAs(string FileName)
            {
                object[] Parameters = new object[1] { FileName };
                m_Workbook.GetType().InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, m_Workbook, Parameters);        }
        }
        public class Worksheets
        {
            private object m_Worksheets;        public Worksheets ( object worksheets )
            {
                m_Worksheets = worksheets;
            }        public Worksheet this[int index]
            {
                get
                {
                    object[] Parameters = new object[1] { index };
                    object worksheet = m_Worksheets.GetType().InvokeMember("Item", System.Reflection.BindingFlags.GetProperty, null, m_Worksheets, Parameters);
                    if (worksheet == null)
                        throw new Exception("获取工作表时出现错误!");
                    else
                        return new Worksheet(worksheet);
                }
            }    }   public class Worksheet
        {
            private object m_Worksheet;
            public Worksheet ( object worksheet )
            {
                m_Worksheet = worksheet ;
            }        public Range this[ int row , int col ]
            {
                get
                {
                    object[] Parameters = new Object[2] { row , col };
                    object cells = m_Worksheet.GetType().InvokeMember("Cells", System.Reflection.BindingFlags.GetProperty, null, m_Worksheet, Parameters);
                    if (cells == null)
                        throw new Exception("获取单元格失败!");
                    else
                        return new Range(cells);
                }
            }
            public Range this[ int row , string col ]
            {
                get
                {
                    object[] Parameters = new Object[2] { row, col };
                    object cells = m_Worksheet.GetType().InvokeMember("Cells", System.Reflection.BindingFlags.GetProperty, null, m_Worksheet, Parameters);
                    if (cells == null)
                        throw new Exception("获取单元格失败!");
                    else
                        return new Range(cells);
                }
            }
        }    public class Range
        {
            private object m_Range;
            public Range(object Range)
            {
                m_Range = Range;
            }        public object Value
            {
                get
                {
                    object result = m_Range.GetType().InvokeMember("Value", System.Reflection.BindingFlags.GetProperty, null, m_Range, null);
                    return result;
                }
                set
                {
                    object[] Parameters = new Object[1] { value  };
                    m_Range.GetType().InvokeMember("Value", System.Reflection.BindingFlags.SetProperty, null, m_Range, Parameters);
                }
            }
        }}
      

  9.   

    http://blog.csdn.net/lanwilliam/archive/2008/06/16/2552457.aspx
    试试这个类
      

  10.   


    这段时间在做一个项目时,遇到了操作EXCEL表的问题,查了不少资料,总结如下: 
    以下是一些对excel的一些基本操作 
    1:工程对excel类库的导入,如:c:\program files\Microsoft office\offiece11\excel.exe 
    2:命名控件的引入: using Microsoft.office.Interop.Excel; 
    3:如果是对一个已经存在的excel文件进行操作则: 
    Application app=new Application(); 
    Workbook wbook=app.Workbooks.Open("c:\\temp.xls",Type.Missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing); 
    Worksheet worksheet=(Worksheet)wbook.Worksheets[1]; 
    4:如果是新建一个excel文件: 
    Application app=new Application(); 
    Workbook wbook=app.Workbook.Add(Type.missing); 
    Worksheet worksheet=(Worksheet)wbook.Worksheets[1]; 
    5:设置某个单元格里的内容: 
    worksheet.Cells[1,2]="列内容" 
    6读取某个单元格里的内容 
    string temp=((Range)worksheet.Cells[1,2]).Text; 
    7设置某个单元格里的格式 
    Excel.Range rtemp=worksheet.get_Range("A1","A1"); 
    rtemp.Font.Name="宋体"; 
    rtemp.Font.FontStyle="加粗"; 
    rtemp.Font.Size=5; 
    8 保存新建的内容: 
    worksheet.SaveAs("c:\\temp.xls",Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing); ------ 
    另要注意用.net时,打开dataView时是默认新增了一条记录,这样的话,必须要在行号减去一条,这样才不会出现那烦人的“未设置对象实例”的错误。