/// <summary>
/// 將DataGirdView數據,導出EXCEL文件.
/// </summary>
/// <param name="dgv">DataGridView控件名稱</param>
/// <param name="name">導出excel文件名稱</param>
public static void ToExcel(DataGridView dgv, string name)
{
try
{
//總可見列數,總可見行數
int colCount = dgv.Columns.GetColumnCount(DataGridViewElementStates.Visible);
int rowCount = dgv.Rows.GetRowCount(DataGridViewElementStates.Visible);
//dataGridView 沒有數據提示
if (dgv.Rows.Count == 0 || rowCount == 0)
{
MessageBox.Show("列表中沒有數據無法導出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
SaveFileDialog save = new SaveFileDialog();
save.Filter = "excel files(*.xls)|*.xls";
save.Title = "請選擇要導出數據的位置";
save.FileName = name + DateTime.Now.ToLongDateString();
save.InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);
if (save.ShowDialog() == DialogResult.OK)
{
XlsDocument xls = new XlsDocument();//創建空xls文檔
xls.FileName = save.FileName;//保存路徑,如果直接發送到客戶端的話只需要名稱 生成名稱
Worksheet sheet = xls.Workbook.Worksheets.Add(name); //創建一個工作頁爲Dome
//設置文檔列屬性
ColumnInfo cinfo = new ColumnInfo(xls, sheet);//設置xls文檔的指定工作頁的列屬性
cinfo.Collapsed = true;
//設置列的範圍 如 0列-10列
cinfo.ColumnIndexStart = 0;//列開始
cinfo.ColumnIndexEnd = 10;//列結束
cinfo.Collapsed = true;
cinfo.Width = 90 * 60;//列寬度
sheet.AddColumnInfo(cinfo);
//設置文檔列屬性結束
//設置指定工作頁跨行跨列
MergeArea ma = new MergeArea(1, 1, 1, dgv.ColumnCount);//從第1行跨到第二行,從第一列跨到第5列
sheet.AddMergeArea(ma);
//設置指定工作頁跨行跨列結束
//創建列樣式創建列時引用
XF cellXF = xls.NewXF();
cellXF.VerticalAlignment = VerticalAlignments.Centered;
cellXF.HorizontalAlignment = HorizontalAlignments.Centered;
cellXF.Font.Height = 24 * 12;
cellXF.Font.Bold = true;
cellXF.Pattern = 0;//設定單元格填充風格。如果設定爲0,則是純色填充
cellXF.PatternBackgroundColor = Colors.Black;//填充的背景底色
cellXF.PatternColor = Colors.Black;//設定填充線條的顏色
//創建列樣式結束
//創建列
Cells cells = sheet.Cells; //獲得指定工作頁列集合
//列操作基本
Cell cell = cells.Add(1, 1, name, cellXF);//添加標題列返回一個列 參數:行 列 名稱 樣式對象
//設置XY居中
cell.HorizontalAlignment = HorizontalAlignments.Centered;
cell.VerticalAlignment = VerticalAlignments.Centered;
//設置字體
cell.Font.Bold = true;//設置粗體
cell.Font.ColorIndex = 0;//設置顏色碼
cell.Font.FontFamily = FontFamilies.Roman;//設置字體 默認爲宋體
//創建列結束
//生成字段名稱
int k = 0;
for (int i = 0; i < dgv.ColumnCount; i++)
{
if (dgv.Columns[i].Visible) //不導出隱藏的列
{
Cell title = cells.Add(2, k + 1, dgv.Columns[i].HeaderText);
title.HorizontalAlignment = HorizontalAlignments.Centered;
title.VerticalAlignment = VerticalAlignments.Centered;
k++;
}
}
//填充數據
for (int i = 0; i < dgv.RowCount; i++)
{
k = 1;
for (int j = 0; j < dgv.ColumnCount; j++)
{
if (dgv.Columns[j].Visible) //不導出隱藏的列
{
if (dgv[j, i].ValueType == typeof(string))
{
cells.Add(i + 3, k, "" + dgv[j, i].Value.ToString());
}
else
{
string str = dgv[j, i].Value.ToString();
if (str == "True")
{
str = "是";
}
else if(str =="False")
{
str = "否";
}
cells.Add(i + 3, k, str);
}
}
k++;
}
}
xls.Save(true);//保存
MessageBox.Show("Excel文件導出成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ce)
{
MessageBox.Show(ce.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
將DataGirdView數據,導出EXCEL文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.