在工控行业中,有很多地方需要将数据生成报表,如PDF,excel格式等。
其中PDF格式比较简单,今天介绍下如何操作excel。
string filePath = new DirectoryInfo("./").FullName + "TWTS_Config\\扳手借出数据表.xls"; //模板所在位置
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); //创建一个excel应用
Workbooks wbks = app.Workbooks; //获取当前的工作薄
_Workbook _wbk = wbks.Add(filePath); //打开模板文件
Sheets shs = _wbk.Sheets; //工作页sheet
_Worksheet _wsh = (_Worksheet)shs.get_Item(1); //1是要取得的sheet的index
excel模板如下表,单元格赋值采用下面方式:
_wsh.Cells[xlsRows, 1] = dataList.Rows[r].Cells[2].Value.ToString();
然后递增行索引来添加更多数据。
#region 防止打开excel使老提示文件格式和扩展名不匹配 --目前用户可以在对话框中选择格式此处暂时屏蔽
String version = app.Version;//获取你使用的excel 的版本号
int FormatNum;//保存excel文件的格式
if (Convert.ToDouble(version) < 12)//You use Excel 97-2003
{
FormatNum = -4143;
}
else//you use excel 2007 or later
{
FormatNum = 56;
}
#endregion
//其他操作
/* 屏蔽掉系统跳出的Alert */
app.AlertBeforeOverwriting = false;
#endregion
/* 防止低版本保存时弹出兼容性检查 */
_wbk.CheckCompatibility = false;
/* 保存到指定目录 */
string savePath = nFilePath;
_wbk.SaveAs(savePath, FormatNum); //同上方 --目前用户可以在对话框中选择格式此处暂时屏蔽
//_wbk.SaveAs(savePath);
_wbk.Close();//关闭文档
wbks.Close();//关闭工作簿
app.Quit();//关闭EXCEL应用程序
/* 释放EXCEL应用程序的进程 */
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);