/// <summary>
/// 与表样比较
/// </summary>
public class CompareSample
{
public CompareSample()
{
dtCheck = CreateDt();
}
private DataTable dtCheck;
public DataTable DtCheck
{
get { return dtCheck; }
}
private DataTable CreateDt()
{
DataTable dt = new DataTable();
dt.Columns.Add("row", typeof(int));
dt.Columns.Add("column", typeof(int));
dt.Columns.Add("content", typeof(string));
return dt;
}
public void DtToXml(string fileName, string dir = "d:\\Log")
{
XmlDocument doc = new XmlDocument();
doc.CreateXmlDeclaration("1.0", "utf-8", "yes");
XmlNode root = doc.CreateElement("cells");
doc.AppendChild(root);
foreach (DataRow dr in dtCheck.Rows)
{
XmlNode cell = doc.CreateElement("cell");
root.AppendChild(cell);
XmlNode row = doc.CreateElement("row");
cell.AppendChild(row);
row.InnerText = dr["row"].ToString();
XmlNode column = doc.CreateElement("column");
cell.AppendChild(column);
column.InnerText = dr["column"].ToString();
XmlNode content = doc.CreateElement("content");
cell.AppendChild(content);
content.InnerText = dr["content"].ToString();
}
doc.Save(dir + "\\" + fileName);
}
public void AppendFromSelection(Excel.Range selection)
{
//Excel.Range rng = app.Selection;
foreach (Excel.Range r in selection)
{
if (null != r.Value2)
{
AppendRowFromRange(r);
}
}
AddColumnLetter();
}
public void AppendRowFromRange(Excel.Range rng)
{
DataRow dr = dtCheck.NewRow();
dr["row"] = rng.Row;
dr["column"] = rng.Column;
dr["content"] = rng.Text;
dtCheck.Rows.Add(dr);
}
public void AppendFromXml(string fileName)
{
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
XmlNodeList list = doc.SelectNodes("/cells/cell");
if (null != list)
{
foreach (XmlNode item in list)
{
DataRow dr = dtCheck.NewRow();
dr["row"] = int.Parse(item.SelectSingleNode("./row").InnerText);
dr["column"] = int.Parse(item.SelectSingleNode("./column").InnerText);
dr["content"] = item.SelectSingleNode("./content").InnerText;
dtCheck.Rows.Add(dr);
}
//Add Column Letter
AddColumnLetter();
}
}
private void AddColumnLetter()
{
dtCheck.Columns.Add("ColLetter", typeof(string));
foreach (DataRow item in dtCheck.Rows)
{
item["ColLetter"] = MyCommon.IntToLetter(int.Parse(item["column"].ToString()));
}
}
}
using Excel = Microsoft.Office.Interop.Excel;
using CpmBigDataImportService;
using System.Data;
namespace ExcelAddIn2
{
public partial class Ribbon1
{
private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
}
private void button1_Click(object sender, RibbonControlEventArgs e)
{
Excel.Application app = Globals.ThisAddIn.Application;
CompareSample cs = new CompareSample();
/*
cs.AppendFromXml(@"d:\log\x.xml");
MyCommon.FillDtToWorksheet(app, cs.DtCheck);
*/
Excel.Range rng = app.Selection;
cs.AppendFromSelection(rng);
MyCommon.FillDtToWorksheet(app, cs.DtCheck);
}
}
}