导入导出Excel的简单,中等,复杂,方法
#region 导出简单方法
public static void DataTabletoExcel(System.Data.DataTable tmpDataTable)
{
//建立EXECL对象
Excel.Application excel= new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = true;
//添加字段名称
int count = tmpDataTable.Columns.Count;
for (int i = 0; i < count; i++)
{
//标头占第一行
excel.Cells[1, i + 1] = tmpDataTable.Columns[i].ColumnName;
}
//填充数据
int row = tmpDataTable.Rows.Count;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < count; j++)
{
//数据从第二行开始
excel.Cells[i + 2, j + 1] = tmpDataTable.Rows[i][j].ToString();
}
}
}
#endregion
#region 导出中等方法
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.Application();
xlApp.DefaultFilePath = "";
xlApp.DisplayAlerts = true;
xlApp.SheetsInNewWorkbook = 1;
Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
//将DataTable的列名导入Excel表第一行
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(strFileName);
}
#endregion
#region 导出复杂类
class CommanPrint
{
/// <summary>
/// 导出Excel
/// 版权所有 : 天山寒雪 QQ:757015000 MSN: haijun.qin@hotmail.com
/// </summary>
/// <param name="mydgv">控件 DataGridView </param>
/// <param name="dic">中英文对照的标题 </param>
public static void ExportTasks(ListView mylv, Dictionary<string, string> dic)
{
// 定义要使用的Excel 组件接口
// 定义Application 对象,此对象表示整个Excel 程序
Microsoft.Office.Interop.Excel.Application excelApp = null;
// 定义Workbook对象,此对象代表工作薄
Microsoft.Office.Interop.Excel.Workbook workBook;
// 定义Worksheet 对象,此对象表示Execel 中的一张工作表
Microsoft.Office.Interop.Excel.Worksheet ws = null;
//定义Range对象,此对象代表单元格区域
Microsoft.Office.Interop.Excel.Range range;
int dcell = 1;
int rowindex = 0; int colindex = 0;
int rowcount = mylv.Items.Count;
int colcount = mylv.Columns.Count;
int dispcolcount = dic.Count;
try
{
//初始化 Application 对象 excelApp
excelApp = new Microsoft.Office.Interop.Excel.Application();
//在工作薄的第一个工作表上创建任务列表
workBook = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
ws = (Worksheet)workBook.Worksheets[1];
// 命名工作表的名称为
ws.Name = "Sheet1";
//创建缓存
Object[,] objdata = new object[rowcount + 1, colcount];
//创建标题
foreach (string s in dic.Keys)
{
objdata[rowindex, colindex++] = dic[s].ToString();
}
//获取数据
for (int i = 0; i < rowcount; i++)
{
dcell = 0;
foreach (string ss in dic.Keys)
{
for (int j = 0; j < colcount; j++)
{
if (mylv.Columns[j].Name == ss)
{
objdata[i + 1, dcell++] = mylv.Items[i].SubItems[j].Text; //得到样式之后的值
}
}
}
}
//写入Excel
range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[rowcount, dispcolcount]);
range.Value2 = objdata;
System.Windows.Forms.Application.DoEvents();
//设置格式
excelApp.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft; //全局左对齐
excelApp.Cells.EntireColumn.AutoFit();
range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[1, colcount]);
range.Font.Bold = true; //标题粗体
//显示 Excel
excelApp.Visible = true;
}
catch (Exception ex)
{
throw ex;
}
}
}
#endregion
public static void DataTabletoExcel(System.Data.DataTable tmpDataTable)
{
//建立EXECL对象
Excel.Application excel= new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = true;
//添加字段名称
int count = tmpDataTable.Columns.Count;
for (int i = 0; i < count; i++)
{
//标头占第一行
excel.Cells[1, i + 1] = tmpDataTable.Columns[i].ColumnName;
}
//填充数据
int row = tmpDataTable.Rows.Count;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < count; j++)
{
//数据从第二行开始
excel.Cells[i + 2, j + 1] = tmpDataTable.Rows[i][j].ToString();
}
}
}
#endregion
#region 导出中等方法
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.Application();
xlApp.DefaultFilePath = "";
xlApp.DisplayAlerts = true;
xlApp.SheetsInNewWorkbook = 1;
Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
//将DataTable的列名导入Excel表第一行
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(strFileName);
}
#endregion
#region 导出复杂类
class CommanPrint
{
/// <summary>
/// 导出Excel
/// 版权所有 : 天山寒雪 QQ:757015000 MSN: haijun.qin@hotmail.com
/// </summary>
/// <param name="mydgv">控件 DataGridView </param>
/// <param name="dic">中英文对照的标题 </param>
public static void ExportTasks(ListView mylv, Dictionary<string, string> dic)
{
// 定义要使用的Excel 组件接口
// 定义Application 对象,此对象表示整个Excel 程序
Microsoft.Office.Interop.Excel.Application excelApp = null;
// 定义Workbook对象,此对象代表工作薄
Microsoft.Office.Interop.Excel.Workbook workBook;
// 定义Worksheet 对象,此对象表示Execel 中的一张工作表
Microsoft.Office.Interop.Excel.Worksheet ws = null;
//定义Range对象,此对象代表单元格区域
Microsoft.Office.Interop.Excel.Range range;
int dcell = 1;
int rowindex = 0; int colindex = 0;
int rowcount = mylv.Items.Count;
int colcount = mylv.Columns.Count;
int dispcolcount = dic.Count;
try
{
//初始化 Application 对象 excelApp
excelApp = new Microsoft.Office.Interop.Excel.Application();
//在工作薄的第一个工作表上创建任务列表
workBook = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
ws = (Worksheet)workBook.Worksheets[1];
// 命名工作表的名称为
ws.Name = "Sheet1";
//创建缓存
Object[,] objdata = new object[rowcount + 1, colcount];
//创建标题
foreach (string s in dic.Keys)
{
objdata[rowindex, colindex++] = dic[s].ToString();
}
//获取数据
for (int i = 0; i < rowcount; i++)
{
dcell = 0;
foreach (string ss in dic.Keys)
{
for (int j = 0; j < colcount; j++)
{
if (mylv.Columns[j].Name == ss)
{
objdata[i + 1, dcell++] = mylv.Items[i].SubItems[j].Text; //得到样式之后的值
}
}
}
}
//写入Excel
range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[rowcount, dispcolcount]);
range.Value2 = objdata;
System.Windows.Forms.Application.DoEvents();
//设置格式
excelApp.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft; //全局左对齐
excelApp.Cells.EntireColumn.AutoFit();
range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[1, colcount]);
range.Font.Bold = true; //标题粗体
//显示 Excel
excelApp.Visible = true;
}
catch (Exception ex)
{
throw ex;
}
}
}
#endregion
浙公网安备 33010602011771号