C# 导出 Excel 封装类 代码
来源:互联网 发布:淘宝nala彩妆是正品吗 编辑:程序博客网 时间:2024/06/07 19:47
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
namespace Common
{
public class Excel
{
/// <summary>
/// DataGridView导出Excel
/// </summary>
/// <param name="strCaption">Excel文件中的标题</param>
/// <param name="myDGV">DataGridView 控件</param>
/// <returns>0:成功;1:DataGridView中无记录;2:Excel无法启动;9999:异常错误</returns>
public int ExportExcel(string strCaption, DataGridView myDGV, SaveFileDialog saveFileDialog)
{
int result = 9999;
//保存
saveFileDialog.Filter = "Execl files (*.xlsx)|*.xlsx";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
//saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "Export Excel File";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
if (saveFileDialog.FileName == "")
{
MessageBox.Show("请输入保存文件名!");
saveFileDialog.ShowDialog();
}
// 列索引,行索引,总列数,总行数
int ColIndex = 0;
int RowIndex = 0;
int ColCount = myDGV.ColumnCount;
int RowCount = myDGV.RowCount + 1;
if (myDGV.RowCount == 0)
{
result = 1;
}
// 创建Excel对象
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
if (xlApp == null)
{
result = 2;
}
try
{
// 创建Excel工作薄
Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
Microsoft.Office.Interop.Excel.Worksheet xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[1];
// 设置标题
Microsoft.Office.Interop.Excel.Range range = xlSheet.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, ColCount]); //标题所占的单元格数与DataGridView中的列数相同
range.MergeCells = true;
xlApp.ActiveCell.FormulaR1C1 = strCaption;
xlApp.ActiveCell.Font.Size = 20;
xlApp.ActiveCell.Font.Bold = true;
xlApp.ActiveCell.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;
range.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
//range.NumberFormatLocal = "@"; //设置单元格格式为文本
// 创建缓存数据
object[,] objData = new object[RowCount + 1, ColCount];
//获取列标题
foreach (DataGridViewColumn col in myDGV.Columns)
{
objData[RowIndex, ColIndex++] = col.HeaderText;
}
// 获取数据
for (RowIndex = 1; RowIndex < RowCount; RowIndex++)
{
for (ColIndex = 0; ColIndex < ColCount; ColIndex++)
{
//这里就是验证DataGridView单元格中的类型,如果是string或是DataTime类型,则在放入缓存时在该内容前加入" ";
if (myDGV[ColIndex, RowIndex - 1].ValueType == typeof(string)||myDGV[ColIndex, RowIndex - 1].ValueType == typeof(DateTime))
{
objData[RowIndex, ColIndex] = " " + myDGV[ColIndex, RowIndex - 1].Value;
}
else
{
object obj;
if (null == myDGV[ColIndex, RowIndex - 1].Value)
{
obj = myDGV[ColIndex, RowIndex - 1].FormattedValue;
}
else
{
obj = myDGV[ColIndex, RowIndex - 1].Value;
}
objData[RowIndex, ColIndex] = obj;
}
}
System.Windows.Forms.Application.DoEvents();
}
// 写入Excel
range = xlSheet.get_Range(xlApp.Cells[2, 1], xlApp.Cells[RowCount + 1, ColCount]);
range.NumberFormatLocal = "@"; //设置单元格格式为文本
range.Value2 = objData;
xlBook.Saved = true;
xlBook.SaveCopyAs(saveFileDialog.FileName.Replace(".xlsx", "") + ".xlsx");
}
catch
{
result = 9999;
}
finally
{
xlApp.Quit();
GC.Collect(); //强制回收
}
//返回值
result = 0;
}
return result;
}
}
}
0 0
- C# 导出 Excel 封装类 代码
- C# 导出Excel代码
- 【代码】C#导出Excel
- C#导出EXCEL代码1
- C#导出导入到Excel的代码
- C#导出到Excel的代码
- C#导出EXCEL文件代码1
- 封装类 导出gridview为excel
- Poi实现Excel导出工具类封装
- Poi实现Excel导出工具类封装
- Excel导入导出封装工具类
- java导出excel封装成工具类
- java封装导出Excel
- 导出Excel封装
- 封装excel的导出
- 导出excel封装
- 封装poi导出EXCEL
- C# datagridview 导出EXCEL 类
- 大数据IMF传奇行动绝密课程第25课:Spark Sort-Based Shuffle内幕彻底解密
- WEB前端-HTML-常用标签
- android_assert目录下的文件
- asp HTTP 错误 500.21 - Internal Server Error
- 使用achartengine画图,双Y轴右侧标题文字显示不全
- C# 导出 Excel 封装类 代码
- iptables Linux防火墙配置工具
- 大数据IMF传奇行动绝密课程第26课:Spark Runtime内幕揭秘
- 2016暑假练习——线段树
- C# 用数据库读取Excel出现“定义了过多字段”错误的解决方法
- 2016.8.11
- php如何实现单例模式
- cscope
- 逗号表达式