private void btnExp_Click(object sender, EventArgs e)
{
if (gridWithPagingControl1.GridView.Rows.Count != 0)
{
if (RadMessageBox.Show("是否要导出数据", "提示", MessageBoxButtons.YesNo, RadMessageIcon.Info, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
try
{
object oa = gridWithPagingControl1.GridView.DataSource;
List<ModelAnalysisData> lists = oa as List<ModelAnalysisData>;
System.Data.DataTable dt = GetDataTable(lists);
dt.Columns[0].ColumnName = "年";
dt.Columns[1].ColumnName = "月";
dt.Columns[2].ColumnName = "日";
dt.Columns[3].ColumnName = "客户";
dt.Columns[4].ColumnName = "用户";
dt.Columns[5].ColumnName = "用户提交总数";
dt.Columns[6].ColumnName = "用户提交成功数";
dt.Columns[7].ColumnName = "用户提交失败数";
dt.Columns[8].ColumnName = "发送成功数";
dt.Columns[9].ColumnName = "发送失败数";
dt.Columns[10].ColumnName = "发送未回数";
dt.Columns[11].ColumnName = "移动成功数";
dt.Columns[12].ColumnName = "联通成功数";
dt.Columns[13].ColumnName = "电信成功数";
//
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.RestoreDirectory = true;
saveDialog.DefaultExt = "xlsx";
saveDialog.Filter = "Excel文件|*.xlsx";
saveDialog.FileName = "导出记录" + DateTime.Now.ToString("yyyyMMddhhmmss");
if (saveDialog.ShowDialog() == DialogResult.OK)
{
saveFileName = saveDialog.FileName;
TimeSpan dateBegin = new TimeSpan(DateTime.Now.Ticks);
DataTabletoExcel(dt, saveFileName);
TimeSpan dateend = new TimeSpan(DateTime.Now.Ticks);
TimeSpan tspan = dateBegin.Subtract(dateend).Duration();
RadMessageBox.Show("导出成功,用时" + tspan.ToString() + "秒");
//创建进程
Process[] processes;
//获得进程的名字
processes = Process.GetProcessesByName("Excel");
if (processes.Length > 0)
{
foreach (Process p in processes)
{
//kill进程
p.Kill();
}
}
}
}
catch (Exception ex)
{
RadMessageBox.Show("导出失败!");
}
}
}
else
{
RadMessageBox.Show("当前没有可导出的数据!");
}
}
/// <summary>
/// 导出datatable
/// </summary>
/// <param name="tmpDataTable"></param>
/// <param name="strFileName"></param>
public static void DataTabletoExcel(System.Data.DataTable tmpDataTable, string strFileName)
{
if (tmpDataTable == null)
return;
int rowNum = tmpDataTable.Rows.Count;
int columnNum = tmpDataTable.Columns.Count;
int rowIndex = 1;
int columnIndex = 0;
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
if (xlApp == null)
{
RadMessageBox.Show("无法启动Excel,可能您未安装Excel");
return;
}
xlApp.DefaultFilePath = "";
xlApp.DisplayAlerts = true;
xlApp.SheetsInNewWorkbook = 1;
Workbook xlBook = xlApp.Workbooks.Add(true);
//将DataTable的列名导入Excel表第一行
//设置每行每列的间距
xlApp.get_Range("a2", "a2").ColumnWidth = 5;
xlApp.get_Range("b2", "b2").ColumnWidth = 4;
xlApp.get_Range("c2", "c2").ColumnWidth = 4;
xlApp.get_Range("d2", "d2").ColumnWidth = 10;
xlApp.get_Range("e2", "e2").ColumnWidth = 10;
xlApp.get_Range("f2", "f2").ColumnWidth = 12;
xlApp.get_Range("g2", "g2").ColumnWidth = 14;
xlApp.get_Range("h2", "h2").ColumnWidth = 14;
xlApp.get_Range("i2", "i2").ColumnWidth = 10;
xlApp.get_Range("j2", "j2").ColumnWidth = 10;
xlApp.get_Range("k2", "k2").ColumnWidth = 10;
xlApp.get_Range("l2", "l2").ColumnWidth = 10;
xlApp.get_Range("m2", "m2").ColumnWidth = 10;
xlApp.get_Range("n2", "n2").ColumnWidth = 10;
foreach (DataColumn dc in tmpDataTable.Columns)
{
columnIndex++;
xlApp.Cells[rowIndex, columnIndex] = dc.ColumnName;
}
//将DataTable中的数据导入Excel中
for (int i = 0; i < rowNum; i++)
{
rowIndex++;
columnIndex = 0;
for (int j = 0; j < columnNum; j++)
{
columnIndex++;
xlApp.Cells[rowIndex, columnIndex] = tmpDataTable.Rows[i][j].ToString();
}
}
//xlBook.SaveCopyAs(HttpUtility.UrlDecode(strFileName, System.Text.Encoding.UTF8));
xlBook.SaveCopyAs(strFileName);
//
}