您的位置:首页 > 编程语言 > C#

C#学习之用Microsoft.office.interop.excel.dll导出excel

2014-03-18 21:50 459 查看
在导出excel前,需要做好的准备工作就是添加引用,添加Microsoft.office.interof.excel动态库,然后才能进行接下来的操作。

在这里,我们从最简单的导出操作开始,首先需要认识的是excel动态库中的Application类,自认为这个类主要指的就是excel应用本身,使用excel动态库导出excel时,每次都会伴随着Application类的创建,基于这样的操作,才能进行创建excel文件或者打开excel文件。其次就是要了解Workbook类,这个指的就是excel文件,而Worksheet则是excel中的一个sheet页,Worksheet.Cells[i,j]指的是在一个sheet中单元格的位置。大概的结构就是这样。

所有的excel操作都需要使用excel application,创建一个新的Application实例,最后释放它,Application xlsApp = new Application();

存储excel 的操作是:

workbook.saved=true;

workbook.SaveCopyAs(filepath);

一下是一个简单的导出Excel的方法。

#region properties
private int locationX;
private int locationY;
public int LocationX
{
set { locationX = value; }
get { return locationX; }
}
public int LocationY
{
set { locationX = value; }
get { return locationY; }
}
#endregion
#region Method
public  void ExportExcel(DataSet ds)
{
try
{
Microsoft.Office.Interop.Excel.Application appXls = new Microsoft.Office.Interop.Excel.Application();
if (appXls == null) return;
Workbook workbook = appXls.Workbooks.Add(true);
appXls.Visible = true;  //显示excel
appXls.DisplayAlerts = false;   //don't show alert or warning

Worksheet worksheet = workbook.Worksheets[1];
InsertData(ds, worksheet);
workbook.Saved = true;
workbook.SaveCopyAs("F:\\sample.xlsx");
workbook.Close();
if (appXls != null)
{
appXls.Quit();
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
private  void InsertData(DataSet ds, Worksheet worksheet)
{
locationX = 1;
locationY = 1;
Microsoft.Office.Interop.Excel.Range range;
foreach (System.Data.DataTable dt in ds.Tables)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheet.Cells[locationY+1, i + 1] = dt.Columns[i].ColumnName;
range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[locationY+1,locationY + i + 1];
range.Interior.ColorIndex = 15;
range.Font.Bold = true;
}
locationY++;
for (int r = 0; r < dt.Rows.Count; r++)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheet.Cells[locationY+r + 1, i + 1] = dt.Rows[r][i].ToString();

}
}
locationY = locationY + dt.Rows.Count+1;
}
}
#endregion Method



以上的代码是不带有样式的导出excel,如果对excel存在样式的要求,例如字体的颜色,样式,大小或者单元格的底色等,则需要类似与如下操作。

private Microsoft.Office.Interop.Excel.Range workSheet_range = null;
worksheet.Cells[int Row, int Col] = Text;
workSheet_range = worksheet.get_Range(string StartCell, string EndCell);
workSheet_range.MergeCells = be.IsMerge;
workSheet_range.Interior.Color = GetColorValue(ColorValue);
workSheet_range.Borders.Color = System.Drawing.Color.Black.ToArgb();
workSheet_range.ColumnWidth = int width;
workSheet_range.Font.Color = string.IsNullOrEmpty(FontColor.Value) ?
System.Drawing.Color.White.ToArgb() : System.Drawing.Color.Black.ToArgb();


第二行是设置文本内容。第三行是获取单元格区域,MergeCells是决定是否将单元格区域合并,Interior.color是单元格背景色,Borders.Color是单元格边框的颜色,Font.Color

是字体的颜色。

下面的连接是一个导出excel的demo,可以借鉴一下。
http://download.csdn.net/detail/slamzwl/7051117
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息