zoukankan      html  css  js  c++  java
  • EXCEL导出

     /// <summary>
            /// 导出Excel
            /// </summary>
            /// <param name="table"></param>
            public void WriteToExcel(DataGridView dgv)
            {
                try
                {
                    SaveFileDialog dialog = new SaveFileDialog
                    {
                        Title = "保存",
                        Filter = "Excel(*.xls)|*.xls|所有文件(*.*)|*.*",
                        RestoreDirectory = true
                    };
                    if (dialog.ShowDialog() == DialogResult.OK)
                    {
                        System.IO.StreamWriter sw = new System.IO.StreamWriter(dialog.FileName, true, System.Text.Encoding.Default); //写入流
                        object[] values = new object[dgv.Columns.Count];
                        for (int i = 0; i < dgv.Columns.Count; ++i)
                        {
                            sw.Write(dgv.Columns[i].HeaderText.ToString());
                            sw.Write('\t');
                        }
                        sw.Write("\r\n");
                        for (int i = 0; i < dgv.Rows.Count; i++)
                        {
                            for (int j = 0; j < values.Length; ++j)
                            {
                                if (dgv.Rows[i].Cells[j].Value != null)
                                {
                                    sw.Write(dgv.Rows[i].Cells[j].Value.ToString());
                                }
                                sw.Write('\t');
                            }
                            sw.Write("\r\n");
                        }
                        sw.Flush();
                        sw.Close();
                        MessageBox.Show("成功导出[" + dgv.Rows.Count.ToString() + "]行到Execl!");
                    }
                }
                catch
                {
                    MessageBox.Show("导出Execl失败!");
                }
            }

            #region 導出Excel
            public void outPutExcel(DataGridView dgv)
            {
                SaveFileDialog dialog = new SaveFileDialog
                {
                    Title = "保存",
                    Filter = "Excel(*.xls)|*.xls|所有文件(*.*)|*.*",
                    RestoreDirectory = true
                };
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    if (dgv.Rows.Count == 0) return;
                    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
                    if (xlApp == null)
                    {
                        return;
                    }
                    //創建Excel對象
                    Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
                    Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
                    //Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
                    Microsoft.Office.Interop.Excel.Worksheet worksheet = null;
                    worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
                    if (worksheet == null)
                    {
                        worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.Add(Type.Missing, Type.Missing, 1, Type.Missing);
                    }
                    //else
                    //{
                    //    //worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.Add(Type.Missing, worksheet, 1, Type.Missing);
                    //}
                    Microsoft.Office.Interop.Excel.Range range = null;
                    long totalCount = dgv.Rows.Count;
                    long rowRead = 0;
                    float percent = 0;
                    worksheet.Name = "明細資料一";//第一个sheet在Excel中显示的名称
                    ////写入标题
                    for (int i = 0; i < dgv.Columns.Count; i++)
                    {
                        worksheet.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
                        range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, i + 1];
                        range.Interior.ColorIndex = 15;//背景颜色
                        range.Font.Bold = true;//粗体
                        range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;//居中
                        //加边框
                        range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null);
                        //range.ColumnWidth = dgv.Columns[i].Width;//设置列宽
                        range.EntireColumn.AutoFit();//自动调整列宽
                        //r1.EntireRow.AutoFit();//自动调整行高
                    }
                    //写入内容
                    for (int r = 0; r < dgv.Rows.Count; r++)
                    {
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            worksheet.Cells[r + 2, i + 1] = dgv.Rows[r].Cells[i].Value;
                            range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[r + 2, i + 1];
                            range.Font.Size = 9;//字体大小
                            //加边框
                            range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null);
                            range.EntireColumn.AutoFit();//自动调整列宽
                        }
                        rowRead++;
                        percent = ((float)(100 * rowRead)) / totalCount;
                    }
                    range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
                    if (dgv.Columns.Count > 1)
                    {
                        range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
                    }
                    //下面是将Excel存储在服务器上指定的路径与存储的名称
                    try
                    {
                        string tPath = dialog.FileName;
                        workbook.SaveCopyAs(tPath);
                        if ( MessageBox.Show("导出Excel成功")== DialogResult.OK)
                        {
                            KillProcess("EXCEL");
                        }
                    }
                   catch (Exception ex)
                    {
                        string strMsgErr = "生成Excel附件過程中出現異常,詳細信息如:" + ex.ToString();
                    }       
                }
            }
            /// <summary>
            /// 杀死进程
            /// </summary>
            /// <param name="processName"></param>
            private void KillProcess(string processName)
            {
                System.Diagnostics.Process myproc = new System.Diagnostics.Process();
                //得到所有打开的进程
                try
                {
                    foreach (System.Diagnostics.Process thisproc in System.Diagnostics.Process.GetProcessesByName(processName))
                    {
                        //if (!thisproc.CloseMainWindow())
                        if (thisproc.ProcessName == "EXCEL")
                        {
                            thisproc.Kill();
                            break;
                        }
                    }
                }
                catch (Exception Exc)
                {
                    throw new Exception("", Exc);
                }
            }
            #endregion

  • 相关阅读:
    vim初试(Hello World)
    CSP201809-2 买菜(超简单的方法!!)
    CSP202006-2 稀疏向量
    CSP202012-2 期末预测之最佳阈值
    浮点数表示
    结构体
    全排列-康托展开及逆展开
    CA-031 上手Games101环境 Games101环境怎么配置
    计算机图形学 实验四 AET算法
    计算机图形学 实验三 梁氏裁剪算法
  • 原文地址:https://www.cnblogs.com/Iyce/p/2738658.html
Copyright © 2011-2022 走看看