C# 导出Excel 设置格式
2011-12-15 21:46
429 查看
C# 中使用 Excel
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
using ExcelApplication
= Microsoft.Office.Interop.Excel.ApplicationClass;
namespace ExcalDemo
{
public
class ExcelFiles
{
public
void CreateExcelFiles()
{
//创建一个 Excel 实例
ExcelApplication excel =
new ExcelApplication();
try
{
// 注释掉的语句是:从磁盘指定位置打开一个 Excel 文件
//excel.Workbooks.Open("demo.xls", Missing.Value, Missing.Value,
//Missing.Value,Missing.Value, Missing.Value, Missing.Value,
//Missing.Value, Missing.Value, Missing.Value, Missing.Value,
//Missing.Value, Missing.Value, Missing.Value, Missing.Value);
excel.Visible =
false;// 不显示 Excel 文件,如果为 true 则显示 Excel 文件
excel.Workbooks.Add(Missing.Value);// 添加工作簿
Worksheet sheet = (Worksheet)excel.ActiveSheet;// 获取当前工作表
Range range =
null;// 创建一个空的单元格对象
sheet.get_Range(sheet.Cells[29,2],sheet.Cells[29,2]).Orientation=Excel.XlOrientation.xlVertical;//字体竖直居中在单元格内
range = sheet.get_Range("A1",
Missing.Value);// 获取单个单元格
range.RowHeight =
20; // 设置行高
range.ColumnWidth =
20; // 设置列宽
range.Borders.LineStyle
= 1; // 设置单元格边框
range.Font.Bold =
true; // 加粗字体
range.Font.Size =
20; // 设置字体大小
range.Font.ColorIndex
= 5; // 设置字体颜色
range.Interior.ColorIndex
= 6; // 设置单元格背景色
range.HorizontalAlignment
= XlHAlign.xlHAlignCenter;// 设置单元格水平居中
range.VerticalAlignment
= XlVAlign.xlVAlignCenter;// 设置单元格垂直居中
range.Value2 =
"设置行高和列宽";// 设置单元格的值
range = sheet.get_Range("B2",
"D4");// 获取多个单元格
range.Merge(Missing.Value); // 合并单元格
range.Columns.AutoFit(); // 设置列宽为自动适应
range.NumberFormatLocal
= "#,##0.00";//
设置单元格格式为货币格式
// 设置单元格左边框加粗
range.Borders[XlBordersIndex.xlEdgeLeft].Weight
= XlBorderWeight.xlThick;
// 设置单元格右边框加粗
range.Borders[XlBordersIndex.xlEdgeRight].Weight
= XlBorderWeight.xlThick;
range.Value2 =
"合并单元格";
// 页面设置
sheet.PageSetup.PaperSize
= XlPaperSize.xlPaperA4; // 设置页面大小为A4
sheet.PageSetup.Orientation
= XlPageOrientation.xlPortrait;
// 设置垂直版面
sheet.PageSetup.HeaderMargin
= 0.0; // 设置页眉边距
sheet.PageSetup.FooterMargin
= 0.0; // 设置页脚边距
sheet.PageSetup.LeftMargin
= excel.InchesToPoints(0.354330708661417);
// 设置左边距
sheet.PageSetup.RightMargin
= excel.InchesToPoints(0.354330708661417);// 设置右边距
sheet.PageSetup.TopMargin
= excel.InchesToPoints(0.393700787401575); // 设置上边距
sheet.PageSetup.BottomMargin
= excel.InchesToPoints(0.393700787401575);// 设置下边距
sheet.PageSetup.CenterHorizontally
= true; // 设置水平居中
// 打印文件
sheet.PrintOut(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
// 保存文件到程序运行目录下
sheet.SaveAs(System.Windows.Forms.Application.StartupPath
+ "\demo.xls", Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
excel.ActiveWorkbook.Close(false,
null,
null); // 关闭 Excel 文件且不保存
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
excel.Quit(); // 退出 Excel
excel =
null;
// 将 Excel 实例设置为空
// 即便是这样, 有时在系统任务管理器中仍能看到一个 Excel 进程, 但有时也看不到
// 据非权威人事说,这是 Office 2003 的 Bug. 这个问题有待与考证.
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
excel.Quit(); // 退出 Excel
excel =
null;
// 将 Excel 实例设置为空
// 即便是这样, 有时在系统任务管理器中仍能看到一个 Excel 进程, 但有时也看不到
// 据非权威人事说,这是 Office 2003 的 Bug. 这个问题有待与考证.
}
}
}
}
range = sheet.get_Range("B2",
"D4");//
获取多个单元格
range.Merge(Missing.Value); //
合并单元格
range.Columns.AutoFit(); //
设置列宽为自动适应
range.NumberFormatLocal
=
"#,##0.00";//
设置单元格格式为货币格式
// 设置单元格左边框加粗
range.Borders[XlBordersIndex.xlEdgeLeft].Weight
= XlBorderWeight.xlThick;
// 设置单元格右边框加粗
range.Borders[XlBordersIndex.xlEdgeRight].Weight
= XlBorderWeight.xlThick;
range.Value2 =
"合并单元格";
// 页面设置
sheet.PageSetup.PaperSize
= XlPaperSize.xlPaperA4; //
设置页面大小为A4
sheet.PageSetup.Orientation
= XlPageOrientation.xlPortrait;
// 设置垂直版面
sheet.PageSetup.HeaderMargin
=
0.0; //
设置页眉边距
sheet.PageSetup.FooterMargin
=
0.0; //
设置页脚边距
sheet.PageSetup.LeftMargin
= excel.InchesToPoints(0.354330708661417);
// 设置左边距
sheet.PageSetup.RightMargin
= excel.InchesToPoints(0.354330708661417);//
设置右边距
sheet.PageSetup.TopMargin
= excel.InchesToPoints(0.393700787401575); //
设置上边距
sheet.PageSetup.BottomMargin
= excel.InchesToPoints(0.393700787401575);//
设置下边距
sheet.PageSetup.CenterHorizontally
=
true; //
设置水平居中
// 打印文件
sheet.PrintOut(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
// 保存文件到程序运行目录下
sheet.SaveAs(System.Windows.Forms.Application.StartupPath
+
"\demo.xls",
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
excel.ActiveWorkbook.Close(false,
null,
null);
// 关闭 Excel 文件且不保存
}
运行环境: Microsoft Office Excel 2003 + Microsoft Visual Studio 2005
1. 为项目添加 COM 组件的引用
方法如下:
项目 -> 添加引用 -> com -> Microsoft Excel Object 11.0 Object Library -> 确定
此时项目里会增加 3 个引用, 分别是: Excel、Microsoft.Office.Core、VBIDE
2. 在类文件里添加如下命名空间的引用
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
using ExcelApplication = Microsoft.Office.Interop.Excel.ApplicationClass; //为了与 System.Windows.Forms 命名空间下的 Application 类有所区分, 纯属方便代码的编写.
注: 最好不要用在窗体类中使用. 因为,当引入 Microsoft.Office.Interop.Excel 命名空间后, Microsoft.Office.Interop.Excel 命名空间下的 Application 接口会同 System.Windows.Forms 命名空间下的 Application 类产生二义性冲突. 要使用 Application 类, 就必须在
Application 前面添加完整的命名空间名.
经过以上 2 步的操作就可以使用 Excel 了. 但是, 关于 Excel 的 MSDN 很少, 多数都是 English 的. 这样对使用 Excel 带来了不便. 想调整单元格的大小都十分困难. 这里我告诉大家一个简单实用的笨方法. 那就是: 打开你的 Excel, 录制宏. 然后根据生成的 VB 代码, 去到 MSDN 里查相关 C# 的帮助.
相关文章推荐
- C#导出Excel,并且设置Excel单元格格式,合并单元格.
- C#导出Excel,并且设置Excel单元格格式,合并单元格.
- C# 中Excel导出,可以自由设置导出的excel格式
- C# 导出Excel 中设置公式、格式问题
- C#导出Excel,并且设置Excel单元格格式,合并单元格
- C# 导出Excel格式设置
- C#中导出excel的时候设置单元格格式
- C#导出excel单元格格式设置
- C# 导出excel并设置格式
- C#导出Excel按照指定格式设置单元格属性值
- C#导出Excel按照指定格式设置单元格属性值
- C#导出Excel按照指定格式设置单元格属性值
- C#导出Excel,并且设置Excel单元格格式,合并单元格.
- asp.net导出Excel/Csv格式数据最优方案(C#)
- C#将dataGridView数据导出成EXCEl、WORD格式
- net导出excel 并设置格式
- python导出excel常用格式样式设置
- 【导出EXCEL汇编】asp.net 将数据导出到excel中,并设置其格式
- 导出excel时设置单元格格式(避免类似0100的数字丢失前面的0)
- C# DataGridView导出Excel,设置单元格合并,隐藏行