|
using System;
using System.Data;
using Excel;
namespace LogicLayer
{
///
/// Summary description of OutputExcel
///
public class OutputExcel
{
public OutputExcel (DataView dv, string str)
{
//
// TODO: Add constructor logic here
//
Excel.Application excel;
int rowIndex = 4;
int colIndex = 1;
Excel._Workbook xBk;
Excel._Worksheet xSt;
excel = new Excel.ApplicationClass () ;;
xBk = excel.Workbooks.Add (true);
xSt = (Excel._Worksheet) xBk.ActiveSheet;
//
// Get the title
//
foreach (DataColumn col in dv.Table.Columns)
{
colIndex ++;
excel.Cells [4, colIndex] = col.ColumnName;
xSt.get_Range (excel.Cells [4, colIndex], excel.Cells [4, colIndex]). HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter; // Set the title format to center alignment
}
//
// Get the data in the table
//
foreach (DataRowView row in dv)
{
rowIndex ++;
colIndex = 1;
foreach (DataColumn col in dv.Table.Columns)
{
colIndex ++;
if (col.DataType == System.Type.GetType ("System.DateTime"))
{
excel.Cells [rowIndex, colIndex] = (Convert.ToDateTime (row [col.ColumnName] .ToString ())). ToString ("yyyy-MM-dd");
xSt.get_Range (excel.Cells [rowIndex, colIndex], excel.Cells [rowIndex, colIndex]). HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter; // Set the date field format to center alignment
}
else
if (col.DataType == System.Type.GetType ("System.String"))
{
excel.Cells [rowIndex, colIndex] = "'" + row [col.ColumnName] .ToString ();
xSt.get_Range (excel.Cells [rowIndex, colIndex], excel.Cells [rowIndex, colIndex]). HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter; // Set the character field format to center alignment
}
else
{
excel.Cells [rowIndex, colIndex] = row [col.ColumnName] .ToString ();
}
}
}
//
// Load a total line
//
int rowSum = rowIndex + 1;
int colSum = 2;
excel.Cells [rowSum, 2] = "Total";
xSt.get_Range (excel.Cells [rowSum, 2], excel.Cells [rowSum, 2]). HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
//
// Set the color of the selected part
//
xSt.get_Range (excel.Cells [rowSum, colSum], excel.Cells [rowSum, colIndex]). Select ();
xSt.get_Range (excel.Cells [rowSum, colSum], excel.Cells [rowSum, colIndex]). Interior.ColorIndex = 19; // Set to light yellow, there are 56 kinds in total
//
// Get the title of the entire report
//
excel.Cells [2,2] = str;
//
// Set the title format of the entire report
//
xSt.get_Range (excel.Cells [2,2], excel.Cells [2,2]). Font.Bold = true;
xSt.get_Range (excel.Cells [2,2], excel.Cells [2,2]). Font.Size = 22;
//
// Set the report table to the most suitable width
//
xSt.get_Range (excel.Cells [4,2], excel.Cells [rowSum, colIndex]). Select ();
xSt.get_Range (excel.Cells [4,2], excel.Cells [rowSum, colIndex]). Columns.AutoFit ();
//
// Set the title of the entire report to be centered across columns
//
xSt.get_Range (excel.Cells [2,2], excel.Cells [2, colIndex]). Select ();
xSt.get_Range (excel.Cells [2,2], excel.Cells [2, colIndex]). HorizontalAlignment = Excel.XlHAlign.xlHAlignCenterAcrossSelection;
//
// Draw border
//
xSt.get_Range (excel.Cells [4,2], excel.Cells [rowSum, colIndex]). Borders.LineStyle = 1;
xSt.get_Range (excel.Cells [4,2], excel.Cells [rowSum, 2]). Borders [Excel.XlBordersIndex.xlEdgeLeft] .Weight = Excel.XlBorderWeight.xlThick; // Set the left line bold
xSt.get_Range (excel.Cells [4,2], excel.Cells [4, colIndex]). Borders [Excel.XlBordersIndex.xlEdgeTop] .Weight = Excel.XlBorderWeight.xlThick; // Set the upper line bold
xSt.get_Range (excel.Cells [4, colIndex], excel.Cells [rowSum, colIndex]). Borders [Excel.XlBordersIndex.xlEdgeRight] .Weight = Excel.XlBorderWeight.xlThick; // Set the right line bold
xSt.get_Range (excel.Cells [rowSum, 2], excel.Cells [rowSum, colIndex]). Borders [Excel.XlBordersIndex.xlEdgeBottom] .Weight = Excel.XlBorderWeight.xlThick; // Set the bottom line bold
//
//display effect
//
excel.Visible = true;
}
}
}
Also: don't forget the KILL EXCEL process |
|