Excel 在Csharp里导出

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
namespace OPeartionExcel
{
public class Excels
{
private Workbook book;
private Worksheet sheet;
private Microsoft.Office.Interop.Excel.Application xlapp;
public Workbook Book
{
get { return book; }
set { book = value; }
}
public Worksheet Shet
{
get { return sheet; }
set { sheet = value; }
}
public Microsoft.Office.Interop.Excel.Application Xlapp
{
get { return xlapp; }
set { xlapp = value; }
}

    public void ExportData(DataGridView dgv)
    {                       
        //创建一个进程          
        try
        {
            xlapp = new Microsoft.Office.Interop.Excel.Application();
            //添加一个工作簿
            Book = xlapp.Workbooks.Add();
            //建立一个表
            Shet = book.Worksheets[1] as Worksheet;
            sheet.Name = "测试表格";
            //Type.Missing 为默认值,传入null会引发异常

            //Range代表矩形框。
            Range range = sheet.Range["A1:H1", Type.Missing];
            //Microsoft Excel 显示特定的警告和消息
            xlapp.DisplayAlerts = true;
            //覆盖非空单元格时,禁止弹出消息提示框。
            xlapp.AlertBeforeOverwriting = true;
            xlapp.Visible = false;//是否弹窗显示
            range.MergeCells=true;
            //设置矩形框内的为文本模式
            range.NumberFormatLocal = "@";
            range.Value2 = "测试表格\r\n" +"报表时间:"+ DateTime.Now.ToString("yyyy-MM-dd");
            range.RowHeight = 50; 
            //设置边框样式
            range.Borders.LineStyle = 1;//设置边框样式
            range.Font.Bold = true;//加粗
            range.Font.Size = 18;//字体的发小
            range.HorizontalAlignment = XlHAlign.xlHAlignCenter;//水平居中
            range.VerticalAlignment = XlHAlign.xlHAlignCenter;//竖直居中
            //选中下面的字体
            range.Characters[7, 15].Font.Bold = false;
            range.Characters[7, 15].Font.Size = 14;
            //range.
            //保存工作簿
            //Save是对修改的保存
            //SaveAs是首次保存。
            for (int i = 0; i < dgv.Columns.Count; i++)
            {
                Range rangeHeader = null;
                if (i>=4)
                {
                    rangeHeader = Shet.Range[Shet.Cells[2, i + 1], Shet.Cells[2, i + 4]];
                    rangeHeader.MergeCells = true;                       
                }
                else
                {
                    rangeHeader = Shet.Cells[2, i + 1];
                }
                rangeHeader.Borders.LineStyle = 1;//设置边框样式
                rangeHeader.Font.Size = 14;
                rangeHeader.Font.Bold = true;
                rangeHeader.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                rangeHeader.VerticalAlignment = XlHAlign.xlHAlignCenter;
                rangeHeader.Value2 = dgv.Columns[i].HeaderText;
            }
            for (int j = 0; j < dgv.Rows.Count; j++)
            {
                for (int i = 0; i < dgv.Columns.Count; i++)
                {
                    Range rangeCell = null;
                    if (i >= 4)
                    {
                        rangeCell = Shet.Range[Shet.Cells[j+3, i + 1], Shet.Cells[j+3, i + 4]];
                        rangeCell.MergeCells = true;
                        rangeCell.NumberFormatLocal = "@";
                    }
                    else
                    {
                        rangeCell = Shet.Cells[j+3, i + 1];

                    }
                    rangeCell.Borders.LineStyle = 1;//设置边框样式
                    rangeCell.Font.Size = 14;
                    rangeCell.HorizontalAlignment = XlHAlign.xlHAlignLeft;
                    rangeCell.VerticalAlignment = XlHAlign.xlHAlignCenter;
                    rangeCell.Value2 = dgv[i, j].Value;
                }
            }
            book.SaveAs(OpenFileDialog());
            xlapp.Save();
        }
        catch (Exception ex )
        {
            throw ex;
        }
        finally
        {
            xlapp.Quit();
            xlapp = null;
            GC.Collect();
        }
    }
    private string OpenFileDialog()
    {
        SaveFileDialog save = new SaveFileDialog();
        string filePath = string.Empty;
        //"txt files(*.txt)|*.txt|xls files(*.xls)|*.xls|All files(*.*)|*.*";
        //存储窗口文件类型
        save.Filter= "Excel文件(*.xlsx) | *.xlsx";
        save.RestoreDirectory = true;
        if (save.ShowDialog()==DialogResult.OK)
        {
            //获取文件路径(包含文件名和路径)
            filePath = save.FileName.ToString();

            //获取文件名,不包含路径
            string path1 = save.FileName.Substring(filePath.LastIndexOf("\\") + 1);
            //获取文件路径,不包含名
            //int num = filePath.LastIndexOf("\\");
            string path2 = save.FileName.Substring(0, filePath.LastIndexOf("\\"));
        }
        return filePath;
    }
}

}

posted @   跨界专家  阅读(316)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示