C#导出Excel

说明:实现从Datatable、Gridview数据导入到Excel文件中,(Excel文件是自己创建的,调用模板方法的请自行点击右上角X)

方法一: 从Datatable到Excel

/// <summary>
/// 导出Excel的方法
/// </summary>
private void ExportExcel(DataTable mycsvdt)
{
if (mycsvdt == null || mycsvdt.Rows.Count < 0)
{
return;
}
bool fileSaved = false;
SaveFileDialog sfdSaveFile = new SaveFileDialog();

//设置保存文件的格式
sfdSaveFile.DefaultExt = "xlsx";
//sfdSaveFile.DefaultExt = "xls";

sfdSaveFile.Filter = "Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls";
sfdSaveFile.FileName = string.Empty;
if (sfdSaveFile.ShowDialog() != DialogResult.OK) return;

//电脑Excel程序
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel程序!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
//Workbook集合
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
//Workbook
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
//WorkSheet
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1

//写入字段列标题
for (int i = 0; i < mycsvdt.Columns.Count; i++)
{
worksheet.Cells[1, i + 1] = mycsvdt.Columns[i].ColumnName;
}
//写入数值
for (int r = 0; r < mycsvdt.Rows.Count; r++)
{
for (int i = 0; i < mycsvdt.Columns.Count; i++)
{
worksheet.Cells[r + 2, i + 1] = mycsvdt.Rows[r][i];
}
System.Windows.Forms.Application.DoEvents();
}

worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
//对指定列进行格式输出
//Microsoft.Office.Interop.Excel.Range rg = worksheet.get_Range(worksheet.Cells[2, 1], worksheet.Cells[this.table.Rows.Count + 1, 1]);
//rg.NumberFormat = "00000000";
try
{
workbook.Saved = true;
workbook.SaveCopyAs(sfdSaveFile.FileName);//保存复制到指定位置
fileSaved = true;
}
catch (Exception ex)
{
fileSaved = false;
MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
}
finally
{
workbooks.Close();
xlApp.Quit();
GC.Collect();//强行销毁
}
if (fileSaved && System.IO.File.Exists(sfdSaveFile.FileName))
{
//System.IO.File.Open(sfdSaveFile.FileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Read);
System.Diagnostics.Process.Start(sfdSaveFile.FileName); //打开EXCEL
}
}

方法二:从Gridview到Excel文件

/// <summary>
/// 导出Excel的方法
/// </summary>
private void ExportExcel()
{
bool fileSaved = false;
SaveFileDialog sfdSaveFile = new SaveFileDialog();
sfdSaveFile.DefaultExt = "xlsx"; //设置保存文件的格式
sfdSaveFile.Filter = "Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls";
sfdSaveFile.FileName = string.Empty;
if (sfdSaveFile.ShowDialog() != DialogResult.OK) return;

//电脑Excel程序
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel程序!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
//Workbook集合
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
//Workbook
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
//WorkSheet
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1

//标题
for (int c = 0; c < this.dataGridView1.Columns.Count; c++)
{
worksheet.Cells[1, c + 1] = this.dataGridView1.Columns[c].HeaderText;
//设置单元格样式
Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, c + 1];
//range.Font.Name = "华文楷体";//字体
//range.Font.Bold = true;//是否加粗
//range.Font.Italic = false;//是否倾斜
//range.Font.Size = 15;//字体大小

//其他样式属性暂不知其中的值,不可用
//range.Font.Background ="#fff000";//背景颜色
//range.Font.Color ="#ff0000";//字颜色
//range.Font.ColorIndex = 3;
//range.Borders.Color = "#00ffee";//边框颜色
}
//单元格内容
for (int rowIndex = 0; rowIndex < this.dataGridView1.Rows.Count; rowIndex++)
{
for (int columnIndex = 0; columnIndex < this.dataGridView1.Columns.Count; columnIndex++)
{
worksheet.Cells[rowIndex + 2, columnIndex + 1] = this.dataGridView1.Rows[rowIndex].Cells[columnIndex].Value;
}
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
//对指定列进行格式输出
//Microsoft.Office.Interop.Excel.Range rg = worksheet.get_Range(worksheet.Cells[2, 1], worksheet.Cells[this.table.Rows.Count + 1, 1]);
//rg.NumberFormat = "00000000";
try
{
workbook.Saved = true;
workbook.SaveCopyAs(sfdSaveFile.FileName);//保存复制到指定位置
fileSaved = true;
}
catch (Exception ex)
{
fileSaved = false;
MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
}
finally
{
workbooks.Close();
xlApp.Quit();
GC.Collect();//强行销毁
}
if (fileSaved && System.IO.File.Exists(sfdSaveFile.FileName))
{
//System.IO.File.Open(sfdSaveFile.FileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Read);
System.Diagnostics.Process.Start(sfdSaveFile.FileName); //打开EXCEL
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值