一个c#做的程序,里面有几个textbox,一个datagridview,没有连接数据库
我想新建一个excel,然后把textbox和datagridview的数据导入到excel里面
该怎么操作呢?

解决方案 »

  1.   

    去找个DGV的导出实例,一看便知!
      

  2.   

    可以在网页中用vb脚本访问 Excel.Application这个对象然后创建EXCEL
      

  3.   

    http://topic.csdn.net/u/20100317/14/b7537e89-4f57-4f72-b62a-935bdf7438ce.html?94729
      

  4.   

    数据写到dataset中,再导入到excel中
      

  5.   

    调用Excel的COM
    可以参照http://blog.csdn.net/lsj_zrp/archive/2009/07/29/4390944.aspx
      

  6.   

      public static bool ExportExcel(string strFileName, DataTable dt, string strTempFileName)
            {
                if (dt == null || dt.Rows.Count == 0)
                    return false;
                Excel.Application appExcel = new Excel.Application();
                Excel.Workbook workbookData;
                Excel.Worksheet worksheetData;            System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;
                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");            workbookData = appExcel.Workbooks.Open(strTempFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                    Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);            worksheetData = (Excel.Worksheet)workbookData.Sheets[1];
                //DataTable的ColumnName作为Excel的列名
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    worksheetData.Cells[1, i + 1] = dt.Columns[i].ColumnName.Trim();
                }
                Excel.Range xlRang = null;
                int iRowCount = dt.Rows.Count;//导出的数据总数量
                int iParstedRow = 0;//已经到处的数据总数量            int iCurrSize = 0;//每次实际导出的数量,大多数情况下和iEachSize相同,最后一批可能不同
                int iEachSize = 1000;   // 设定的每次导出的数量
                int iColumnAccount = dt.Columns.Count;
                int iCurrentRow = 0;//当前已经导出的数量,如果大于MaxRow,则新增一个Sheet再导出
                int iSheet = 1;//当前的sheet            object[,] objVal = new object[iEachSize, iColumnAccount];
                try
                {
                    iCurrSize = iEachSize;
                    while (iParstedRow < iRowCount)
                    {
                        if ((iRowCount - iParstedRow) < iEachSize)
                            iCurrSize = iRowCount - iParstedRow;
                        for (int i = 0; i < iCurrSize; i++)
                        {
                            for (int j = 0; j < iColumnAccount; j++)
                                objVal[i, j] = dt.Rows[iParstedRow + i][j].ToString();
                        }
                        // 比如  A1 H10, 表示从 A 到 H 列,  1 到 10 行
                        xlRang = worksheetData.get_Range("A" + ((int)(iCurrentRow + 1)).ToString(), ((char)('A' + iColumnAccount - 1)).ToString()
                            + (((int)(iCurrentRow + iCurrSize + 1)).ToString()));                    xlRang.Value2 = objVal;                    iParstedRow = iParstedRow + iCurrSize;
                        iCurrentRow = iCurrentRow + iCurrSize;                    if (iCurrentRow > MaxRow)
                        {
                            worksheetData = (Excel.Worksheet)workbookData.Worksheets.Add(Missing.Value, workbookData.Worksheets.get_Item(iSheet), Missing.Value, Missing.Value);
                            iSheet += 1;                        for (int i = 0; i < dt.Columns.Count; i++)
                            {
                                worksheetData.Cells[1, i + 1] = dt.Columns[i].ColumnName.Trim();
                            }                        iCurrentRow = 0;
                        }
                    }
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRang);
                    xlRang = null;            }
                catch
                {
                    appExcel.Quit();
                    return false;
                }            System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI;            workbookData.Saved = false;
                workbookData.SaveAs(strFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value);            appExcel.Quit();            return true;
            }本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lsj_zrp/archive/2009/07/29/4390944.aspx
      

  7.   

    public static bool ExportForDataGridview(DataGridView gridView, string fileName, bool isShowExcle) 
            { 
                Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); 
                try 
                { 
                    if (app == null) 
                    { 
                        return false; 
                    } 
                    
                    app.Visible = isShowExcle; 
                    Workbooks workbooks = app.Workbooks; 
                    _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet); 
                    Sheets sheets = workbook.Worksheets; 
                    _Worksheet worksheet = (_Worksheet)sheets.get_Item(1); 
                    if (worksheet == null) 
                    { 
                        return false; 
                    } 
                    string sLen = ""; 
                    char H = (char)(64 + gridView.ColumnCount / 26); 
                    char L = (char)(64 + gridView.ColumnCount % 26); 
                    if (gridView.ColumnCount < 26) 
                    { 
                        sLen = L.ToString(); 
                    } 
                    else 
                    { 
                        sLen = H.ToString() + L.ToString(); 
                    } 
                    string sTmp = sLen + "1"; 
                    Range ranCaption = worksheet.get_Range(sTmp, "A1"); 
                    string[] asCaption = new string[gridView.ColumnCount]; 
                    for (int i = 0; i < gridView.ColumnCount; i++) 
                    { 
                        asCaption[i] = gridView.Columns[i].HeaderText; 
                    } 
                    ranCaption.Value2 = asCaption; 
                    object[] obj = new object[gridView.Columns.Count]; 
                    for (int r = 0; r < gridView.RowCount - 1; r++) 
                    { 
                        for (int l = 0; l < gridView.Columns.Count; l++) 
                        { 
                            if (gridView[l, r].ValueType == typeof(DateTime)) 
                            { 
                                obj[l] = gridView[l, r].Value.ToString(); 
                            } 
                            else 
                            { 
                                obj[l] = gridView[l, r].Value; 
                            } 
                        } 
                        string cell1 = sLen + ((int)(r + 2)).ToString(); 
                        string cell2 = "A" + ((int)(r + 2)).ToString(); 
                        Range ran = worksheet.get_Range(cell1, cell2); 
                        ran.Value2 = obj; 
                    } 
                    workbook.SaveCopyAs(fileName); 
                    workbook.Saved = true; 
                } 
                finally 
                { 
                    app.UserControl = false; 
                    app.Quit(); 
                } 
                return true;         } 
            private void SaveAs() 
            { 
                SaveFileDialog saveFileDialog = new SaveFileDialog(); 
                saveFileDialog.Filter = "Execl files (*.xls)|*.xls"; 
                saveFileDialog.FilterIndex = 0; 
                saveFileDialog.RestoreDirectory = true; 
                saveFileDialog.CreatePrompt = true 
                saveFileDialog.Title = ""; 
                saveFileDialog.ShowDialog(); 
                Stream myStream; 
                myStream = saveFileDialog.OpenFile(); 
                StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0)); 
                string str = ""; 
                try 
                {                 for (int i = 0; i < dgv.ColumnCount; i++) 
                    { 
                        if (i > 0) 
                        { 
                            str += "\t"; 
                        } 
                        str += dgv.Columns[i].HeaderText; 
                    } 
                    sw.WriteLine(str); 
                    for (int j = 0; j < dgvAgeWeekSex.Rows.Count; j++) 
                    { 
                        string tempStr = ""; 
                        for (int k = 0; k < dgv.Columns.Count; k++) 
                        { 
                            if (k > 0)                         { 
                                tempStr += "\t"; 
                            } 
                            tempStr += dgv.Rows[j].Cells[k].Value.ToString(); 
                        } 
                        sw.WriteLine(tempStr);                    
                    } 
                    sw.Close(); 
                    myStream.Close(); 
                } 
                catch (Exception e) 
                { 
                    MessageBox.Show(e.ToString()); 
                } 
                finally 
                { 
                    sw.Close(); 
                    myStream.Close(); 
                }                } 
    http://topic.csdn.net/u/20090820/11/4fdeec59-f790-4afd-8ee9-519021ce72c3.html
      

  8.   

    可以把excel看成像sql这样的数据源,然后第一行看作字段名,这样插入就好了,笨点的方法就用循环易懂些