FSRItemManage.Save(ddp, "D://a.xml");
HRExcelConfig hl = (HRExcelConfig)FSRItemManage.Load(typeof(HRExcelConfig), configFileName);
public class FSRItemManage
{
/// <summary>
/// 指定オブジェクトの属性値をxmlファイルに書き込む
/// </summary>
/// <param name="obj">指定オブジェクト</param>
/// <param name="fileName">xmlファイル名称(フルパス)</param>
/// <returns>
/// 正常に保存された場合 TRUE
/// エラー発生の場合 FALSE
/// </returns>
public static bool Save(object obj, string fileName)
{
try
{
MyXmlSerializer.SerializeObject(obj, fileName);
return true;
}
catch (Exception)
{
return false;
}
}
/// <summary>
/// 指定型のオブジェクトの属性値をxmlファイルから読込む
/// </summary>
/// <param name="type">オブジェクトの型(Type)</param>
/// <param name="fileName">xmlファイル名称(フルパス)</param>
/// <returns></returns>
public static object Load(Type type, string fileName)
{
try
{
return MyXmlSerializer.DeserializeObject(type, fileName);
}
catch (Exception)
{
return null;
}
}
}
public static class MyXmlSerializer //: System.Xml.Serialization.XmlSerializer
{
/// <summary>
/// オブジェクトをシリアル化し、XMLファイルに保存する
/// </summary>
/// <param name="obj">シリアル化する対象</param>
/// <param name="fileName">保存先のファイル名</param>
public static void SerializeObject(object @obj, string @fileName)
{
XmlSerializer serializer = null;
FileStream fs = null;
try
{
//XmlSerializerオブジェクトを作成
//書き込むオブジェクトの型を指定する
serializer = new XmlSerializer(@obj.GetType());
//ファイルを作成
fs = new FileStream(@fileName, FileMode.Create);
//シリアル化し、XMLファイルに保存する
serializer.Serialize(fs, @obj);
}
catch (Exception)
{
}
finally
{
//閉じる
fs.Close();
}
}
/// <summary>
/// ArrayList型を含むクラスのオブジェクトをシリアル化し、XMLファイルに保存する
/// </summary>
/// <param name="obj">シリアル化する対象</param>
/// <param name="fileName">保存先のファイル名</param>
/// <param name="types">ArrayListに挿入できるオブジェクト型のType配列</param>
public static void SerializeObject(object @obj, string @fileName, Type[] @types)
{
XmlSerializer serializer = null;
FileStream fs = null;
try
{
//XmlSerializerオブジェクトを作成
//書き込むオブジェクトの型を指定する
serializer = new XmlSerializer(@obj.GetType(), @types);
//ファイルを作成
fs = new FileStream(@fileName, FileMode.Create);
//シリアル化し、XMLファイルに保存する
serializer.Serialize(fs, @obj);
}
catch (Exception)
{
}
finally
{
//閉じる
fs.Close();
}
}
/// <summary>
/// XMLファイルから読み込み、逆シリアル化する
/// </summary>
/// <param name="fileName">保存先のファイル名</param>
/// <param name="type">逆シリアル化されるオブジェクトのType</param>
/// <returns></returns>
public static object DeserializeObject(Type @type, string @fileName)
{
XmlSerializer serializer = null;
FileStream fs = null;
object obj = null;
try
{
//XmlSerializerオブジェクトの作成
serializer = new XmlSerializer(@type);
//ファイルを開く
fs = new FileStream(@fileName, FileMode.Open);
//XMLファイルから読み込み、逆シリアル化する
obj = serializer.Deserialize(fs);
//return
return obj;
}
catch (Exception)
{
return null;
}
finally
{
//閉じる
fs.Close();
}
}
}
/// 支持XML序列化的泛型 Dictionary
/// </summary>
/// <typeparam name="TKey"></typeparam>
/// <typeparam name="TValue"></typeparam>
[XmlRoot("SerializableDictionary")]
public class SerializableDictionary<TKey, TValue>
: Dictionary<TKey, TValue>, IXmlSerializable
{
#region ?造函数
public SerializableDictionary()
: base()
{
}
public SerializableDictionary(IDictionary<TKey, TValue> dictionary)
: base(dictionary)
{
}
public SerializableDictionary(IEqualityComparer<TKey> comparer)
: base(comparer)
{
}
public SerializableDictionary(int capacity)
: base(capacity)
{
}
public SerializableDictionary(int capacity, IEqualityComparer<TKey> comparer)
: base(capacity, comparer)
{
}
protected SerializableDictionary(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
#endregion
#region IXmlSerializable Members
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}
/// <summary>
/// 从?象的 XML 表示形式生成??象
/// </summary>
/// <param name="reader"></param>
public void ReadXml(System.Xml.XmlReader reader)
{
XmlSerializer keySerializer = new XmlSerializer(typeof(TKey));
XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));
bool wasEmpty = reader.IsEmptyElement;
reader.Read();
if (wasEmpty)
return;
while (reader.NodeType != System.Xml.XmlNodeType.EndElement)
{
reader.ReadStartElement("item");
reader.ReadStartElement("key");
TKey key = (TKey)keySerializer.Deserialize(reader);
reader.ReadEndElement();
reader.ReadStartElement("value");
TValue value = (TValue)valueSerializer.Deserialize(reader);
reader.ReadEndElement();
this.Add(key, value);
reader.ReadEndElement();
reader.MoveToContent();
}
reader.ReadEndElement();
}
/**/
/// <summary>
/// 将?象???其 XML 表示形式
/// </summary>
/// <param name="writer"></param>
public void WriteXml(System.Xml.XmlWriter writer)
{
XmlSerializer keySerializer = new XmlSerializer(typeof(TKey));
XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));
foreach (TKey key in this.Keys)
{
writer.WriteStartElement("item");
writer.WriteStartElement("key");
keySerializer.Serialize(writer, key);
writer.WriteEndElement();
writer.WriteStartElement("value");
TValue value = this[key];
valueSerializer.Serialize(writer, value);
writer.WriteEndElement();
writer.WriteEndElement();
}
}
#endregion
}
[Serializable]
public class HRItem : ICloneable
{
public enum MyXlHAlign
{
xlHAlignRight = -4152,
xlHAlignLeft = -4131,
xlHAlignJustify = -4130,
xlHAlignDistributed = -4117,
xlHAlignCenter = -4108,
xlHAlignGeneral = 1,
xlHAlignFill = 5,
xlHAlignCenterAcrossSelection = 7,
}
public enum MyXlVAlign
{
xlVAlignTop = -4160,
xlVAlignJustify = -4130,
xlVAlignDistributed = -4117,
xlVAlignCenter = -4108,
xlVAlignBottom = -4107,
}
public enum MyXlLineStyle
{
xlLineStyleNone = -4142,
xlDouble = -4119,
xlDot = -4118,
xlDash = -4115,
xlContinuous = 1,
xlDashDot = 4,
xlDashDotDot = 5,
xlSlantDashDot = 13,
}
private string _name = "name";
/// <summary>
/// 選択範囲名称
/// </summary>
[Browsable(false)]
public string Name
{
get { return _name; }
set { _name = value; }
}
private string _text = "";
/// <summary>
/// 選択範囲表示名称
/// </summary>
[Browsable(true)]
[DisplayName("名称")]
public string Text
{
get { return _text; }
set { _text = value; }
}
private string _value = "value";
/// <summary>
/// 選択範囲に表示する値(文字列、数値)
/// </summary>
[Browsable(true)]
[DisplayName("値")]
[Description("選択範囲に表示する値(文字列、数値)")]
public string Value
{
get { return _value; }
set { _value = value; }
}
private string _fontName = "MS Pゴシック";
/// <summary>
/// Font名称
/// </summary>
[Browsable(true)]
[DisplayName("Font名称")]
[Description("Font名称")]
[ReadOnly(true)]
public string FontName
{
get { return _fontName; }
set { _fontName = value; }
}
private float _fontSize = 12;
/// <summary>
/// Fontサイズ
/// </summary>
[Browsable(true)]
[DisplayName("Fontサイズ")]
[Description("Fontサイズ")]
public float FontSize
{
get { return _fontSize; }
set { _fontSize = value; }
}
private bool _fontBold = false;
/// <summary>
/// 文字が太字かどうか
/// </summary>
[Browsable(true)]
[DisplayName("FontBold")]
[Description("文字が太字かどうか")]
public bool FontBold
{
get { return _fontBold; }
set { _fontBold = value; }
}
//private Font _font;
//[Browsable(true)]
//[DisplayName("Font")]
//[System.Xml.Serialization.XmlIgnoreAttribute]
//public Font Font
//{
// get
// {
// if (_fontBold)
// {
// _font = new Font(_fontName, _fontSize, FontStyle.Bold);
// }
// else
// {
// _font = new Font(_fontName, _fontSize, FontStyle.Regular);
// }
// return _font;
// }
// set
// {
// _font = value;
// _fontBold = _font.Bold;
// _fontSize = _font.Size;
// _fontName = _font.Name;
// }
//}
private int _fontColor = 0;
/// <summary>
/// 文字の色
/// </summary>
[Browsable(false)]
public int FontColor
{
get { return _fontColor; }
set { _fontColor = value; }
}
private Color _fontColor1;
[Browsable(true)]
[DisplayName("文字色")]
[Description("文字の色")]
[System.Xml.Serialization.XmlIgnoreAttribute]
public Color FontColor1
{
get
{
_fontColor1 = Color.FromArgb(_fontColor);
return _fontColor1;
}
set
{
_fontColor1 = value;
_fontColor = _fontColor1.ToArgb();
}
}
private int _cell1X = 0;
/// <summary>
/// 選択範囲のセルX(左上のセル)
/// </summary>
[Browsable(true)]
[DisplayName("Cell1 X")]
[Description("選択範囲のセルX(左上のセル)")]
public int Cell1X
{
get { return _cell1X; }
set { _cell1X = value; }
}
private int _cell1Y = 0;
/// <summary>
/// 選択範囲のセルY(左上のセル)
/// </summary>
[Browsable(true)]
[DisplayName("Cell1 Y")]
[Description("選択範囲のセルY(左上のセル)")]
public int Cell1Y
{
get { return _cell1Y; }
set { _cell1Y = value; }
}
private int _cell2X = 0;
/// <summary>
/// 選択範囲のセルX(右下のセル)
/// </summary>
[Browsable(true)]
[DisplayName("Cell2 X")]
[Description("選択範囲のセルX(右下のセル)")]
public int Cell2X
{
get { return _cell2X; }
set { _cell2X = value; }
}
private int _cell2Y = 0;
/// <summary>
/// 選択範囲のセルY(右下のセル)
/// </summary>
[Browsable(true)]
[DisplayName("Cell2 Y")]
[Description("選択範囲のセルY(右下のセル)")]
public int Cell2Y
{
get { return _cell2Y; }
set { _cell2Y = value; }
}
private bool _merge = true;
/// <summary>
/// 選択範囲を結合するかどうか
/// </summary>
[Browsable(true)]
[DisplayName("結合")]
[Description("選択範囲を結合するかどうか")]
public bool Merge
{
get { return _merge; }
set { _merge = value; }
}
private double _columnWidth = 0;
/// <summary>
/// 列の幅
/// </summary>
[Browsable(true)]
[DisplayName("列の幅")]
[Description("列の幅")]
public double ColumnWidth
{
get { return _columnWidth; }
set { _columnWidth = value; }
}
private double _rowHeight = 0;
/// <summary>
/// 行の高さ
/// </summary>
[Browsable(true)]
[DisplayName("行の高さ")]
[Description("行の高さ")]
public double RowHeight
{
get { return _rowHeight; }
set { _rowHeight = value; }
}
private int _backColor = 0;
/// <summary>
/// 選択範囲の背景色
/// </summary>
///
[Browsable(false)]
public int BackColor
{
get
{
return _backColor;
}
set
{
_backColor = value;
}
}
private Color _backColor1;
[Browsable(true)]
[DisplayName("背景色")]
[Description("背景色")]
[System.Xml.Serialization.XmlIgnoreAttribute]
public Color BackColor1
{
get
{
_backColor1 = Color.FromArgb(_backColor);
return _backColor1;
}
set
{
_backColor1 = value;
_backColor = _backColor1.ToArgb();
}
}
private MyXlHAlign _horizontalAlignment = MyXlHAlign.xlHAlignLeft; //"xlHAlignLeft";
/// <summary>
/// 左右揃え
/// public enum XlHAlign
/// {
/// xlHAlignRight = -4152,
/// xlHAlignLeft = -4131,
/// xlHAlignJustify = -4130,
/// xlHAlignDistributed = -4117,
/// xlHAlignCenter = -4108,
/// xlHAlignGeneral = 1,
/// xlHAlignFill = 5,
/// xlHAlignCenterAcrossSelection = 7,
/// }
/// </summary>
[Browsable(true)]
[DisplayName("水平揃え")]
[Description("水平文字列揃え")]
public MyXlHAlign HorizontalAlignment
{
get { return _horizontalAlignment; }
set { _horizontalAlignment = value; }
}
private MyXlVAlign _verticalAlignment = MyXlVAlign.xlVAlignCenter;//"xlVAlignCenter";
/// <summary>
/// 上下揃え
///public enum XlVAlign
///{
/// xlVAlignTop = -4160,
/// xlVAlignJustify = -4130,
/// xlVAlignDistributed = -4117,
/// xlVAlignCenter = -4108,
/// xlVAlignBottom = -4107,
///}
/// </summary>
[Browsable(true)]
[DisplayName("垂直列揃え")]
[Description("水平文字列揃え")]
public MyXlVAlign VerticalAlignment
{
get { return _verticalAlignment; }
set { _verticalAlignment = value; }
}
private bool _wrapText = false;
/// <summary>
/// 文字列が折り返されるかどうか
/// </summary>
[Browsable(true)]
[DisplayName("折り返え")]
[Description("文字列が折り返されるかどうか")]
public bool WrapText
{
get { return _wrapText; }
set { _wrapText = value; }
}
private MyXlLineStyle _topLineStyle = MyXlLineStyle.xlContinuous; //"";
/// <summary>
///public enum XlLineStyle
///{
///xlLineStyleNone = -4142,
///xlDouble = -4119,
///xlDot = -4118,
///xlDash = -4115,
///xlContinuous = 1,
///xlDashDot = 4,
///xlDashDotDot = 5,
///xlSlantDashDot = 13,
///}
/// </summary>
[Browsable(true)]
[DisplayName("上罫線")]
[Description("上罫線")]
public MyXlLineStyle TopLineStyle
{
get { return _topLineStyle; }
set { _topLineStyle = value; }
}
private MyXlLineStyle _rightLineStyle = MyXlLineStyle.xlContinuous; //"";
[Browsable(true)]
[DisplayName("右罫線")]
[Description("右罫線")]
public MyXlLineStyle RightLineStyle
{
get { return _rightLineStyle; }
set { _rightLineStyle = value; }
}
private MyXlLineStyle _bottomLineStyle = MyXlLineStyle.xlContinuous; //"";
[Browsable(true)]
[DisplayName("下罫線")]
[Description("下罫線")]
public MyXlLineStyle BottomLineStyle
{
get { return _bottomLineStyle; }
set { _bottomLineStyle = value; }
}
private MyXlLineStyle _leftLineStyle = MyXlLineStyle.xlContinuous; //"";
[Browsable(true)]
[DisplayName("左罫線")]
[Description("左罫線")]
public MyXlLineStyle LeftLineStyle
{
get { return _leftLineStyle; }
set { _leftLineStyle = value; }
}
private string _description = "";
[Browsable(true)]
[DisplayName("説明")]
[Description("説明")]
public string Description
{
get { return _description; }
set { _description = value; }
}
#region ICloneable メンバ
public object Clone()
{
return MemberwiseClone();
}
#endregion
}