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;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!