651 lines
24 KiB
C#
651 lines
24 KiB
C#
|
|
using System;
|
|||
|
|
using System.Diagnostics;
|
|||
|
|
using System.Collections;
|
|||
|
|
using System.Data;
|
|||
|
|
using System.Web;
|
|||
|
|
using System.Web.UI;
|
|||
|
|
using System.Web.UI.WebControls;
|
|||
|
|
using Excel;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.IO;
|
|||
|
|
using NPOI.SS.UserModel;
|
|||
|
|
using NPOI.HSSF.UserModel;
|
|||
|
|
using NPOI.SS.Format;
|
|||
|
|
using NPOI.SS.Formula.Functions;
|
|||
|
|
using static NPOI.HSSF.Util.HSSFColor;
|
|||
|
|
|
|||
|
|
|
|||
|
|
namespace ZWL.Common
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>EXCEL<45><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// <20><>Ϊ<EFBFBD><CEAA>
|
|||
|
|
/// 2008.4
|
|||
|
|
/// </summary>
|
|||
|
|
public class DataToExcel
|
|||
|
|
{
|
|||
|
|
public DataToExcel()
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>EXCEL<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD>ҪExcel.dll֧<EFBFBD><EFBFBD>)
|
|||
|
|
|
|||
|
|
private int titleColorindex = 15;
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>ⱳ<EFBFBD><E2B1B3>ɫ
|
|||
|
|
/// </summary>
|
|||
|
|
public int TitleColorIndex
|
|||
|
|
{
|
|||
|
|
set { titleColorindex = value; }
|
|||
|
|
get { return titleColorindex; }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private DateTime beforeTime; //Excel<65><6C><EFBFBD><EFBFBD>֮ǰʱ<C7B0><CAB1>
|
|||
|
|
private DateTime afterTime; //Excel<65><6C><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>ʱ<EFBFBD><CAB1>
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Excelʾ<EFBFBD><EFBFBD>
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Excelʾ<6C><CABE>
|
|||
|
|
/// </summary>
|
|||
|
|
public void CreateExcel()
|
|||
|
|
{
|
|||
|
|
Excel.Application excel = new Excel.Application();
|
|||
|
|
excel.Application.Workbooks.Add(true);
|
|||
|
|
excel.Cells[1, 1] = "<22><>1<EFBFBD>е<EFBFBD>1<EFBFBD><31>";
|
|||
|
|
excel.Cells[1, 2] = "<22><>1<EFBFBD>е<EFBFBD>2<EFBFBD><32>";
|
|||
|
|
excel.Cells[2, 1] = "<22><>2<EFBFBD>е<EFBFBD>1<EFBFBD><31>";
|
|||
|
|
excel.Cells[2, 2] = "<22><>2<EFBFBD>е<EFBFBD>2<EFBFBD><32>";
|
|||
|
|
excel.Cells[3, 1] = "<22><>3<EFBFBD>е<EFBFBD>1<EFBFBD><31>";
|
|||
|
|
excel.Cells[3, 2] = "<22><>3<EFBFBD>е<EFBFBD>2<EFBFBD><32>";
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
excel.ActiveWorkbook.SaveAs("./tt.xls", XlFileFormat.xlExcel9795, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
|
excel.Visible = true;
|
|||
|
|
// excel.Quit();
|
|||
|
|
// excel=null;
|
|||
|
|
// GC.Collect();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD>DataTable<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>DataTable<6C><65><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>ʾΪ<CABE><CEAA><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="dt">Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|||
|
|
/// <param name="strTitle"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD></param>
|
|||
|
|
/// <param name="FilePath"><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>·<EFBFBD><C2B7></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public string OutputExcel(System.Data.DataTable dt, string strTitle, string FilePath)
|
|||
|
|
{
|
|||
|
|
beforeTime = DateTime.Now;
|
|||
|
|
|
|||
|
|
Excel.Application excel;
|
|||
|
|
Excel._Workbook xBk;
|
|||
|
|
Excel._Worksheet xSt;
|
|||
|
|
|
|||
|
|
int rowIndex = 4;
|
|||
|
|
int colIndex = 1;
|
|||
|
|
|
|||
|
|
excel = new Excel.ApplicationClass();
|
|||
|
|
xBk = excel.Workbooks.Add(true);
|
|||
|
|
xSt = (Excel._Worksheet)xBk.ActiveSheet;
|
|||
|
|
|
|||
|
|
//ȡ<><C8A1><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
|||
|
|
foreach (DataColumn col in dt.Columns)
|
|||
|
|
{
|
|||
|
|
colIndex++;
|
|||
|
|
excel.Cells[4, colIndex] = col.ColumnName;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ʽΪ<CABD><CEAA><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
|||
|
|
xSt.get_Range(excel.Cells[4, colIndex], excel.Cells[4, colIndex]).Font.Bold = true;
|
|||
|
|
xSt.get_Range(excel.Cells[4, colIndex], excel.Cells[4, colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;
|
|||
|
|
xSt.get_Range(excel.Cells[4, colIndex], excel.Cells[4, colIndex]).Select();
|
|||
|
|
xSt.get_Range(excel.Cells[4, colIndex], excel.Cells[4, colIndex]).Interior.ColorIndex = titleColorindex;//19;//<2F><><EFBFBD><EFBFBD>Ϊdz<CEAA><C7B3>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>56<35><36>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//ȡ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
foreach (DataRow row in dt.Rows)
|
|||
|
|
{
|
|||
|
|
rowIndex++;
|
|||
|
|
colIndex = 1;
|
|||
|
|
foreach (DataColumn col in dt.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;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>ֶθ<D6B6>ʽΪ<CABD><CEAA><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
|||
|
|
}
|
|||
|
|
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;//<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>͵<EFBFBD><CDB5>ֶθ<D6B6>ʽΪ<CABD><CEAA><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>
|
|||
|
|
int rowSum = rowIndex + 1;
|
|||
|
|
int colSum = 2;
|
|||
|
|
excel.Cells[rowSum, 2] = "<22>ϼ<EFBFBD>";
|
|||
|
|
xSt.get_Range(excel.Cells[rowSum, 2], excel.Cells[rowSum, 2]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD>еIJ<D0B5><C4B2>ֵ<EFBFBD><D6B5><EFBFBD>ɫ
|
|||
|
|
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 =Assistant.GetConfigInt("ColorIndex");// 1;//<2F><><EFBFBD><EFBFBD>Ϊdz<CEAA><C7B3>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>56<35><36>
|
|||
|
|
|
|||
|
|
//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
|
|||
|
|
excel.Cells[2, 2] = strTitle;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|||
|
|
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;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|||
|
|
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();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>о<EFBFBD><D0BE><EFBFBD>
|
|||
|
|
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;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>Ʊ߿<C6B1>
|
|||
|
|
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;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<DFBC>
|
|||
|
|
xSt.get_Range(excel.Cells[4, 2], excel.Cells[4, colIndex]).Borders[Excel.XlBordersIndex.xlEdgeTop].Weight = Excel.XlBorderWeight.xlThick;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1>Ӵ<DFBC>
|
|||
|
|
xSt.get_Range(excel.Cells[4, colIndex], excel.Cells[rowSum, colIndex]).Borders[Excel.XlBordersIndex.xlEdgeRight].Weight = Excel.XlBorderWeight.xlThick;//<2F><><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><D2B1>Ӵ<DFBC>
|
|||
|
|
xSt.get_Range(excel.Cells[rowSum, 2], excel.Cells[rowSum, colIndex]).Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlThick;//<2F><><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1>Ӵ<DFBC>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
afterTime = DateTime.Now;
|
|||
|
|
|
|||
|
|
//<2F><>ʾЧ<CABE><D0A7>
|
|||
|
|
//excel.Visible=true;
|
|||
|
|
//excel.Sheets[0] = "sss";
|
|||
|
|
|
|||
|
|
ClearFile(FilePath);
|
|||
|
|
string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".xls";
|
|||
|
|
excel.ActiveWorkbook.SaveAs(FilePath + filename, Excel.XlFileFormat.xlExcel9795, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
|
|||
|
|
|
|||
|
|
//wkbNew.SaveAs strBookName;
|
|||
|
|
//excel.Save(strExcelFileName);
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Excel<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><>Ҫ<EFBFBD><D2AA>Excel<65><6C>DCOM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:dcomcnfg
|
|||
|
|
|
|||
|
|
|
|||
|
|
//excel.Quit();
|
|||
|
|
//excel=null;
|
|||
|
|
|
|||
|
|
xBk.Close(null, null, null);
|
|||
|
|
excel.Workbooks.Close();
|
|||
|
|
excel.Quit();
|
|||
|
|
|
|||
|
|
|
|||
|
|
//ע<>⣺<EFBFBD><E2A3BA><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Excel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫִ<D2AA><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Excel<65><6C><EFBFBD><EFBFBD>
|
|||
|
|
// if(rng != null)
|
|||
|
|
// {
|
|||
|
|
// System.Runtime.InteropServices.Marshal.ReleaseComObject(rng);
|
|||
|
|
// rng = null;
|
|||
|
|
// }
|
|||
|
|
// if(tb != null)
|
|||
|
|
// {
|
|||
|
|
// System.Runtime.InteropServices.Marshal.ReleaseComObject(tb);
|
|||
|
|
// tb = null;
|
|||
|
|
// }
|
|||
|
|
if (xSt != null)
|
|||
|
|
{
|
|||
|
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);
|
|||
|
|
xSt = null;
|
|||
|
|
}
|
|||
|
|
if (xBk != null)
|
|||
|
|
{
|
|||
|
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
|
|||
|
|
xBk = null;
|
|||
|
|
}
|
|||
|
|
if (excel != null)
|
|||
|
|
{
|
|||
|
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
|
|||
|
|
excel = null;
|
|||
|
|
}
|
|||
|
|
GC.Collect();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
return filename;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region Kill Excel<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>Excel<65><6C><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public void KillExcelProcess()
|
|||
|
|
{
|
|||
|
|
Process[] myProcesses;
|
|||
|
|
DateTime startTime;
|
|||
|
|
myProcesses = Process.GetProcessesByName("Excel");
|
|||
|
|
|
|||
|
|
//<2F>ò<EFBFBD><C3B2><EFBFBD>Excel<65><6C><EFBFBD><EFBFBD>ID<49><44><EFBFBD><EFBFBD>ʱֻ<CAB1><D6BB><EFBFBD>жϽ<D0B6><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
foreach (Process myProcess in myProcesses)
|
|||
|
|
{
|
|||
|
|
startTime = myProcess.StartTime;
|
|||
|
|
if (startTime > beforeTime && startTime < afterTime)
|
|||
|
|
{
|
|||
|
|
myProcess.Kill();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD>DataTable<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>Excel<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>COM.Excel)
|
|||
|
|
|
|||
|
|
#region ʹ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
|
|||
|
|
public static void GridViewToExcel(DataSet MyData, Hashtable nameList,string ReportTitle)
|
|||
|
|
{
|
|||
|
|
string FilePath = System.Web.HttpContext.Current.Server.MapPath("../") + "ReportFile\\";
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>excel<65><6C><EFBFBD><EFBFBD>
|
|||
|
|
DataToExcel dte = new DataToExcel();
|
|||
|
|
string filename = "";
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (MyData.Tables[0].Rows.Count > 0)
|
|||
|
|
{
|
|||
|
|
filename = dte.DataExcel(MyData.Tables[0], ReportTitle, FilePath, nameList);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch
|
|||
|
|
{}
|
|||
|
|
if (filename != "")
|
|||
|
|
{
|
|||
|
|
System.Web.HttpContext.Current.Response.Redirect("../ReportFile/" + filename, true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>DataTable<6C><65><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>ʾΪ<CABE><CEAA><EFBFBD><EFBFBD>(<28><>ʹ<EFBFBD><CAB9>Excel<65><6C><EFBFBD><EFBFBD>)
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="dt"><3E><><EFBFBD><EFBFBD>DataTable</param>
|
|||
|
|
/// <param name="strTitle"><3E><><EFBFBD><EFBFBD></param>
|
|||
|
|
/// <param name="FilePath"><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>·<EFBFBD><C2B7></param>
|
|||
|
|
/// <param name="nameList"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public string DataExcel(System.Data.DataTable dt, string strTitle, string FilePath, Hashtable nameList)
|
|||
|
|
{
|
|||
|
|
COM.Excel.cExcelFile excel = new COM.Excel.cExcelFile();
|
|||
|
|
ClearFile(FilePath);
|
|||
|
|
//string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".xls";
|
|||
|
|
string filename = strTitle + ".xls";
|
|||
|
|
excel.CreateFile(FilePath + filename);
|
|||
|
|
excel.PrintGridLines = false;
|
|||
|
|
|
|||
|
|
COM.Excel.cExcelFile.MarginTypes mt1 = COM.Excel.cExcelFile.MarginTypes.xlsTopMargin;
|
|||
|
|
COM.Excel.cExcelFile.MarginTypes mt2 = COM.Excel.cExcelFile.MarginTypes.xlsLeftMargin;
|
|||
|
|
COM.Excel.cExcelFile.MarginTypes mt3 = COM.Excel.cExcelFile.MarginTypes.xlsRightMargin;
|
|||
|
|
COM.Excel.cExcelFile.MarginTypes mt4 = COM.Excel.cExcelFile.MarginTypes.xlsBottomMargin;
|
|||
|
|
|
|||
|
|
double height = 1.5;
|
|||
|
|
excel.SetMargin(ref mt1, ref height);
|
|||
|
|
excel.SetMargin(ref mt2, ref height);
|
|||
|
|
excel.SetMargin(ref mt3, ref height);
|
|||
|
|
excel.SetMargin(ref mt4, ref height);
|
|||
|
|
|
|||
|
|
COM.Excel.cExcelFile.FontFormatting ff = COM.Excel.cExcelFile.FontFormatting.xlsNoFormat;
|
|||
|
|
string font = "<22><><EFBFBD><EFBFBD>";
|
|||
|
|
short fontsize = 9;
|
|||
|
|
excel.SetFont(ref font, ref fontsize, ref ff);
|
|||
|
|
|
|||
|
|
byte b1 = 1,
|
|||
|
|
b2 = 12;
|
|||
|
|
short s3 = 12;
|
|||
|
|
excel.SetColumnWidth(ref b1, ref b2, ref s3);
|
|||
|
|
|
|||
|
|
string header = "ҳü";
|
|||
|
|
string footer = "ҳ<><D2B3>";
|
|||
|
|
excel.SetHeader(ref header);
|
|||
|
|
excel.SetFooter(ref footer);
|
|||
|
|
|
|||
|
|
|
|||
|
|
COM.Excel.cExcelFile.ValueTypes vt = COM.Excel.cExcelFile.ValueTypes.xlsText;
|
|||
|
|
COM.Excel.cExcelFile.CellFont cf = COM.Excel.cExcelFile.CellFont.xlsFont0;
|
|||
|
|
COM.Excel.cExcelFile.CellAlignment ca = COM.Excel.cExcelFile.CellAlignment.xlsCentreAlign;
|
|||
|
|
COM.Excel.cExcelFile.CellHiddenLocked chl = COM.Excel.cExcelFile.CellHiddenLocked.xlsNormal;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int cellformat = 1;
|
|||
|
|
// int rowindex = 1,colindex = 3;
|
|||
|
|
// object title = (object)strTitle;
|
|||
|
|
// excel.WriteValue(ref vt, ref cf, ref ca, ref chl,ref rowindex,ref colindex,ref title,ref cellformat);
|
|||
|
|
|
|||
|
|
int rowIndex = 1;//<2F><>ʼ<EFBFBD><CABC>
|
|||
|
|
int colIndex = 0;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//ȡ<><C8A1><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
|||
|
|
foreach (DataColumn colhead in dt.Columns)
|
|||
|
|
{
|
|||
|
|
colIndex++;
|
|||
|
|
string name = colhead.ColumnName.Trim();
|
|||
|
|
object namestr = (object)name;
|
|||
|
|
IDictionaryEnumerator Enum = nameList.GetEnumerator();
|
|||
|
|
while (Enum.MoveNext())
|
|||
|
|
{
|
|||
|
|
if (Enum.Key.ToString().Trim() == name)
|
|||
|
|
{
|
|||
|
|
namestr = Enum.Value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex, ref namestr, ref cellformat);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//ȡ<>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
foreach (DataRow row in dt.Rows)
|
|||
|
|
{
|
|||
|
|
rowIndex++;
|
|||
|
|
colIndex = 0;
|
|||
|
|
foreach (DataColumn col in dt.Columns)
|
|||
|
|
{
|
|||
|
|
colIndex++;
|
|||
|
|
if (col.DataType == System.Type.GetType("System.DateTime"))
|
|||
|
|
{
|
|||
|
|
object str = (object)(Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd"); ;
|
|||
|
|
excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex, ref str, ref cellformat);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
object str = (object)row[col.ColumnName].ToString();
|
|||
|
|
excel.WriteValue(ref vt, ref cf, ref ca, ref chl, ref rowIndex, ref colIndex, ref str, ref cellformat);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
int ret = excel.CloseFile();
|
|||
|
|
|
|||
|
|
// if(ret!=0)
|
|||
|
|
// {
|
|||
|
|
// //MessageBox.Show(this,"Error!");
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// //MessageBox.Show(this,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>c:\\test.xls!");
|
|||
|
|
// }
|
|||
|
|
return filename;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Excel<EFBFBD>ļ<EFBFBD>
|
|||
|
|
|
|||
|
|
private void ClearFile(string FilePath)
|
|||
|
|
{
|
|||
|
|
String[] Files = System.IO.Directory.GetFiles(FilePath);
|
|||
|
|
if (Files.Length > 10)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < 10; i++)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
System.IO.File.Delete(Files[i]);
|
|||
|
|
}
|
|||
|
|
catch
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD>ȡexcel<EFBFBD>ļ<EFBFBD>
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡexcel
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="path1"></param>
|
|||
|
|
/// <param name="Excel_Name"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static System.Data.DataTable Reader_Excel(string path1, string Excel_Name)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
//ʵ<><CAB5><EFBFBD><EFBFBD>DataTable<6C><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
System.Data.DataTable dt = new System.Data.DataTable();
|
|||
|
|
string fileName = path1 + Excel_Name;
|
|||
|
|
string sheetName = Excel_Name;//Excel<65>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool isColumnName = true;//<2F>жϵ<D0B6>һ<EFBFBD><D2BB><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
IWorkbook workbook;//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|||
|
|
string fileExt = Path.GetExtension(fileName).ToLower();//<2F><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
|
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
|
|||
|
|
{
|
|||
|
|
if (fileExt == ".xls" || fileExt == ".xlsx")//xlsx
|
|||
|
|
{
|
|||
|
|
//.xls ,xlsx
|
|||
|
|
//XSSFWorkbook workbook = new XSSFWorkbook(file);
|
|||
|
|
//HSSFWorkbook workbook = new HSSFWorkbook(file);
|
|||
|
|
workbook = new HSSFWorkbook(fs);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
workbook = null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//ʵ<><CAB5><EFBFBD><EFBFBD>sheet
|
|||
|
|
ISheet sheet = null;
|
|||
|
|
if (sheetName != null && sheetName != "")//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>sheet
|
|||
|
|
{
|
|||
|
|
sheet = workbook.GetSheet(sheetName);
|
|||
|
|
if (sheet == null)
|
|||
|
|
{
|
|||
|
|
sheet = workbook.GetSheetAt(0);//<2F>ӵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ȡ<EFBFBD><C8A1>0λ<30><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
sheet = workbook.GetSheetAt(0);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1>ͷ
|
|||
|
|
IRow header = sheet.GetRow(sheet.FirstRowNum);
|
|||
|
|
int startRow = 0;//<2F><><EFBFBD>ݵĵ<DDB5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (isColumnName)//<2F><>ʾ<EFBFBD><CABE>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
startRow = sheet.FirstRowNum + 1;//<2F><><EFBFBD>ݴӵڶ<D3B5><DAB6>п<EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
for (int i = header.FirstCellNum; i < header.LastCellNum; i++)
|
|||
|
|
{
|
|||
|
|
ICell cell = header.GetCell(i);
|
|||
|
|
if (cell != null)
|
|||
|
|
{
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
string cellValue = cell.ToString();
|
|||
|
|
if (cellValue != null)
|
|||
|
|
{
|
|||
|
|
DataColumn col = new DataColumn(cellValue);
|
|||
|
|
dt.Columns.Add(col);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
DataColumn col = new DataColumn();
|
|||
|
|
dt.Columns.Add(col);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
for (int i = startRow; i <= sheet.LastRowNum; i++)
|
|||
|
|
{
|
|||
|
|
IRow row = sheet.GetRow(i);
|
|||
|
|
if (row == null)
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
DataRow dr = dt.NewRow();
|
|||
|
|
for (int j = row.FirstCellNum; j < row.LastCellNum; j++)
|
|||
|
|
{
|
|||
|
|
if (row.GetCell(j) != null)
|
|||
|
|
{
|
|||
|
|
dr[j] = row.GetCell(j).ToString();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
dt.Rows.Add(dr);
|
|||
|
|
}
|
|||
|
|
return dt;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception e)
|
|||
|
|
{
|
|||
|
|
throw e;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>datatableд<65>뵽excel(xls)
|
|||
|
|
/// 2023-11-23 xulu
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="dt">datatable</param>
|
|||
|
|
/// <param name="filepath">д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static bool DataTableToExcel(System.Data.DataTable dt, string filepath, Hashtable nameList)
|
|||
|
|
{
|
|||
|
|
bool result = false;
|
|||
|
|
IWorkbook workbook = null;
|
|||
|
|
FileStream fs = null;
|
|||
|
|
IRow row = null;
|
|||
|
|
ISheet sheet = null;
|
|||
|
|
ICell cell = null;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (!File.Exists(filepath))
|
|||
|
|
{
|
|||
|
|
fs=File.Create(filepath);//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
fs.Close();
|
|||
|
|
}
|
|||
|
|
if (dt != null && dt.Rows.Count > 0)
|
|||
|
|
{
|
|||
|
|
workbook = new HSSFWorkbook();
|
|||
|
|
sheet = workbook.CreateSheet("Sheet0");//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪSheet0<74>ı<EFBFBD>
|
|||
|
|
sheet.DefaultRowHeight=30 * 20;
|
|||
|
|
int rowCount = dt.Rows.Count;//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
int columnCount = dt.Columns.Count;//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// ÿ<><C3BF><EFBFBD>п<EFBFBD><D0BF>ֵ<EFBFBD>
|
|||
|
|
var dic = new Dictionary<int, int>();
|
|||
|
|
// <20><><EFBFBD>⼰<EFBFBD><E2BCB0><EFBFBD>ݵ<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ʽ
|
|||
|
|
var headCellStyle = CreateCellStyle(workbook, true);
|
|||
|
|
var contentCellStyle = CreateCellStyle(workbook, false);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|||
|
|
row = sheet.CreateRow(0);//excel<65><6C>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ͷ
|
|||
|
|
for (int c = 0; c < columnCount; c++)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
cell = row.CreateCell(c);
|
|||
|
|
string name = dt.Columns[c].ColumnName;
|
|||
|
|
object namestr = (object)name;
|
|||
|
|
IDictionaryEnumerator Enum = nameList.GetEnumerator();
|
|||
|
|
while (Enum.MoveNext())
|
|||
|
|
{
|
|||
|
|
if (Enum.Key.ToString().Trim() == name)
|
|||
|
|
{
|
|||
|
|
namestr = Enum.Value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
cell.SetCellValue(namestr.ToString());
|
|||
|
|
cell.CellStyle = headCellStyle;
|
|||
|
|
dic.Add(c, System.Text.Encoding.Default.GetBytes(cell.StringCellValue).Length * 256 + 1000);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ÿ<EFBFBD>еĵ<D0B5>Ԫ<EFBFBD><D4AA>,
|
|||
|
|
for (int i = 0; i < rowCount; i++)
|
|||
|
|
{
|
|||
|
|
row = sheet.CreateRow(i + 1);
|
|||
|
|
for (int j = 0; j < columnCount; j++)
|
|||
|
|
{
|
|||
|
|
cell = row.CreateCell(j);//excel<65>ڶ<EFBFBD><DAB6>п<EFBFBD>ʼд<CABC><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
cell.SetCellValue(dt.Rows[i][j].ToString());
|
|||
|
|
cell.CellStyle = contentCellStyle;
|
|||
|
|
int length = System.Text.Encoding.Default.GetBytes(cell.StringCellValue).Length * 256 + 1000;
|
|||
|
|
length = length > 15000 ? 15000 : length;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻<EFBFBD><E6BBBB>Excel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ15000
|
|||
|
|
if (dic[j] < length)
|
|||
|
|
{
|
|||
|
|
dic[j] = length;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for (int i = 0; i < dt.Columns.Count; i++)
|
|||
|
|
{
|
|||
|
|
sheet.SetColumnWidth(i, dic[i]);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
using (fs = File.OpenWrite(filepath))
|
|||
|
|
{
|
|||
|
|
workbook.Write(fs);//<2F><><EFBFBD><EFBFBD><F2BFAAB5><EFBFBD><EFBFBD><EFBFBD>xls<6C>ļ<EFBFBD><C4BC><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
result = true;
|
|||
|
|
fs.Close();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
//MessageBox.Show(ex.Message);
|
|||
|
|
if (fs != null)
|
|||
|
|
{
|
|||
|
|
fs.Close();
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ʽ
|
|||
|
|
/// 2023-11-23 xulu
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="workbook"></param>
|
|||
|
|
/// <param name="isHead"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private static ICellStyle CreateCellStyle(IWorkbook workbook, bool isHead)
|
|||
|
|
{
|
|||
|
|
var cellStyle = workbook.CreateCellStyle();
|
|||
|
|
|
|||
|
|
var font = workbook.CreateFont();
|
|||
|
|
font.IsBold = isHead; // <20><><EFBFBD><EFBFBD>
|
|||
|
|
font.FontHeightInPoints = 12;
|
|||
|
|
font.FontName = "<22><><EFBFBD><EFBFBD>";
|
|||
|
|
cellStyle.SetFont(font);
|
|||
|
|
|
|||
|
|
cellStyle.Alignment = HorizontalAlignment.Center; // ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
|
|||
|
|
cellStyle.VerticalAlignment = VerticalAlignment.Center; // <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
|||
|
|
cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
|||
|
|
cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
|||
|
|
cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
|||
|
|
cellStyle.WrapText = true;//<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺϲ<DDBA><CFB2>ɵ<EFBFBD><C9B5><EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
return cellStyle;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|