问题是这样的。现在需要将上图Excel表中的sheet名(即上图Excel表中的“人员基本信息”)和目的表名(“人员基本信息”)保存到一个txt文件中。其中Ttxt还要保存图中所有对应起来的的列字段的关系,这些全部保存在一个txt文件中。
举例说明txt文件的格式
Excel的表名-----------------SQL的表名
Excel的第一列---SQL表中的第一列
Excel的第二列---SQL表中的第二列
Excel的第3列---SQL表中的第3列
。。。。。。。。在详细点吧(每次各位大侠都说我讲的不详细)实例如下:
人员基本信息-----人员基本信息
姓名---姓名
工号--工号
身份证----身份证
。。。。。。。。。
。。。。
等等。保存好之后,
当我下次选择这二个对应的表的时候,字段对应的关系会自动从txt文件中匹配上,省去手工匹配的麻烦(因为表中的列很多啊),求高手啊,求源码或者示例。。。小弟我对操作文件不熟悉。好心的大哥哥姐姐们,帮帮小弟啊。最好加我QQ 594498390 详聊。谢谢啊!
10 个解决方案
#1
感觉用xml来保存对应关系比较好
<ColumnModel>
<LeftName>人员基本信息</LeftName>
<RightName>人员基本信息</RightName>
</ColumnModel>
...
再编写一个类就很容易对应起来了。
没试过用txt来保存。
<ColumnModel>
<LeftName>人员基本信息</LeftName>
<RightName>人员基本信息</RightName>
</ColumnModel>
...
再编写一个类就很容易对应起来了。
没试过用txt来保存。
#2
请问xml的怎么写啊?给我参考下
#3
DataSet可以直接TO XML
#4
给你个些txt的:
public static void WriteCSV(string filePathName, List<string[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(string[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“\t",strArr) ); //以tab为分隔
}
fileWriter.Flush();
fileWriter.Close();
}
楼主,你先获取表格最新数据,存入List<string[]> ls变量,
如何调用上面的方法!
public static void WriteCSV(string filePathName, List<string[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(string[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“\t",strArr) ); //以tab为分隔
}
fileWriter.Flush();
fileWriter.Close();
}
楼主,你先获取表格最新数据,存入List<string[]> ls变量,
如何调用上面的方法!
#5
Txt存多张表的对应关系,会非常不利于查找,建议用XML,XML读写可参考http://blog.csdn.net/fishpowersoft/article/details/1957113
#6
补上后续:
public static void WriteTxt(string filePathName,bool append, List<string[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(string[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“\t",strArr) ); //以tab为分隔
}
fileWriter.Flush();
fileWriter.Close();
}
List<string[]> all = new List<string[]>();
foreach(DataGridViewRow dgr in dataGridView1.Rows)
{
List<string> rowList = new List<string>();
foreach(DataGridViewCell dgc in dgr.Cells)
{
rowList.Add(dgc.Value.ToString());
}
all.Add(rowList.ToArray());
}
调用:
WriteTxt("c:\\test.txt",false,all );
public static void WriteTxt(string filePathName,bool append, List<string[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(string[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“\t",strArr) ); //以tab为分隔
}
fileWriter.Flush();
fileWriter.Close();
}
List<string[]> all = new List<string[]>();
foreach(DataGridViewRow dgr in dataGridView1.Rows)
{
List<string> rowList = new List<string>();
foreach(DataGridViewCell dgc in dgr.Cells)
{
rowList.Add(dgc.Value.ToString());
}
all.Add(rowList.ToArray());
}
调用:
WriteTxt("c:\\test.txt",false,all );
#7
麻烦各位神人看清需求啊。。
#8
真的可以嘛,牛人,可以留下你的企鹅嘛?
#9
xml文档如下
<?xml version="1.0" encoding="utf-8"?>
<TableModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<EngName>英文表名</EngName>
<ChnName>中文表名</ChnName>
<Columns>
<ColumnModel>
<LeftName>人员基本信息</LeftName>
<RightName>人员基本信息</RightName>
</ColumnModel>
<ColumnModel>
<LeftName>身份证号</LeftName>
<RightName>身份证号号</RightName>
</ColumnModel>
....
</Columns>
</TableModel>
xml就类似这样写。
c#的类
public class TableModel
{
private string _engName; //表的英文名
private string _chnName; //表的中文名
private List<ColumnModel> _columns = new List<ColumnModel>(); //字段结构
}
public class ColumnModel
{
private string leftName; //表中字段名
private string rightName;
}
这些都要封装,我这里省略了。
还要写读写的函数。
public class MyXmlSerializer<T>
{
#region 读函数
/// <summary>
/// 从文件filename中获取类型为T的配置信息。
/// </summary>
/// <param name="fileName">文件的地址</param>
/// <returns></returns>
public static T Read(string fileName)
{
if (!File.Exists(fileName))
{
throw new ArgumentException("请输入有效的配置文件路径:" + fileName);
}
T up;
//try
//{
XmlSerializer myxml = new XmlSerializer(typeof (T));
using (StreamReader reader = new StreamReader(fileName, Encoding.UTF8))
{
up = (T)myxml.Deserialize(reader);
reader.Close();
}
// }
//catch (XmlException e)
//{
// throw new XmlException("文件" + fileName + ":" + e.Message);
//}
return up;
}
#endregion
#region 写函数
/// <summary>
/// 将类型为T的配置信息,保持在文件fileName中
/// </summary>
/// <param name="config">配置信息</param>
/// <param name="fileName">文件地址</param>
public static void Write(T config, string fileName)
{
try
{
XmlSerializer myxml = new XmlSerializer(typeof(T));
using (StreamWriter writer = new StreamWriter(fileName, false, Encoding.UTF8))
{
myxml.Serialize(writer, config);
writer.Close();
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
使用的时候
private TableModel abc = new TableModel();
abc = MyXmlSerializer<TableModel>.Read(xml文件的路径);
写了这么多,希望对你有用。
<?xml version="1.0" encoding="utf-8"?>
<TableModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<EngName>英文表名</EngName>
<ChnName>中文表名</ChnName>
<Columns>
<ColumnModel>
<LeftName>人员基本信息</LeftName>
<RightName>人员基本信息</RightName>
</ColumnModel>
<ColumnModel>
<LeftName>身份证号</LeftName>
<RightName>身份证号号</RightName>
</ColumnModel>
....
</Columns>
</TableModel>
xml就类似这样写。
c#的类
public class TableModel
{
private string _engName; //表的英文名
private string _chnName; //表的中文名
private List<ColumnModel> _columns = new List<ColumnModel>(); //字段结构
}
public class ColumnModel
{
private string leftName; //表中字段名
private string rightName;
}
这些都要封装,我这里省略了。
还要写读写的函数。
public class MyXmlSerializer<T>
{
#region 读函数
/// <summary>
/// 从文件filename中获取类型为T的配置信息。
/// </summary>
/// <param name="fileName">文件的地址</param>
/// <returns></returns>
public static T Read(string fileName)
{
if (!File.Exists(fileName))
{
throw new ArgumentException("请输入有效的配置文件路径:" + fileName);
}
T up;
//try
//{
XmlSerializer myxml = new XmlSerializer(typeof (T));
using (StreamReader reader = new StreamReader(fileName, Encoding.UTF8))
{
up = (T)myxml.Deserialize(reader);
reader.Close();
}
// }
//catch (XmlException e)
//{
// throw new XmlException("文件" + fileName + ":" + e.Message);
//}
return up;
}
#endregion
#region 写函数
/// <summary>
/// 将类型为T的配置信息,保持在文件fileName中
/// </summary>
/// <param name="config">配置信息</param>
/// <param name="fileName">文件地址</param>
public static void Write(T config, string fileName)
{
try
{
XmlSerializer myxml = new XmlSerializer(typeof(T));
using (StreamWriter writer = new StreamWriter(fileName, false, Encoding.UTF8))
{
myxml.Serialize(writer, config);
writer.Close();
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
使用的时候
private TableModel abc = new TableModel();
abc = MyXmlSerializer<TableModel>.Read(xml文件的路径);
写了这么多,希望对你有用。
#10
用xml写 到时候表中字段修改了,改起来很方便,受益很多的。
#1
感觉用xml来保存对应关系比较好
<ColumnModel>
<LeftName>人员基本信息</LeftName>
<RightName>人员基本信息</RightName>
</ColumnModel>
...
再编写一个类就很容易对应起来了。
没试过用txt来保存。
<ColumnModel>
<LeftName>人员基本信息</LeftName>
<RightName>人员基本信息</RightName>
</ColumnModel>
...
再编写一个类就很容易对应起来了。
没试过用txt来保存。
#2
请问xml的怎么写啊?给我参考下
#3
DataSet可以直接TO XML
#4
给你个些txt的:
public static void WriteCSV(string filePathName, List<string[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(string[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“\t",strArr) ); //以tab为分隔
}
fileWriter.Flush();
fileWriter.Close();
}
楼主,你先获取表格最新数据,存入List<string[]> ls变量,
如何调用上面的方法!
public static void WriteCSV(string filePathName, List<string[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(string[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“\t",strArr) ); //以tab为分隔
}
fileWriter.Flush();
fileWriter.Close();
}
楼主,你先获取表格最新数据,存入List<string[]> ls变量,
如何调用上面的方法!
#5
Txt存多张表的对应关系,会非常不利于查找,建议用XML,XML读写可参考http://blog.csdn.net/fishpowersoft/article/details/1957113
#6
补上后续:
public static void WriteTxt(string filePathName,bool append, List<string[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(string[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“\t",strArr) ); //以tab为分隔
}
fileWriter.Flush();
fileWriter.Close();
}
List<string[]> all = new List<string[]>();
foreach(DataGridViewRow dgr in dataGridView1.Rows)
{
List<string> rowList = new List<string>();
foreach(DataGridViewCell dgc in dgr.Cells)
{
rowList.Add(dgc.Value.ToString());
}
all.Add(rowList.ToArray());
}
调用:
WriteTxt("c:\\test.txt",false,all );
public static void WriteTxt(string filePathName,bool append, List<string[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(string[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“\t",strArr) ); //以tab为分隔
}
fileWriter.Flush();
fileWriter.Close();
}
List<string[]> all = new List<string[]>();
foreach(DataGridViewRow dgr in dataGridView1.Rows)
{
List<string> rowList = new List<string>();
foreach(DataGridViewCell dgc in dgr.Cells)
{
rowList.Add(dgc.Value.ToString());
}
all.Add(rowList.ToArray());
}
调用:
WriteTxt("c:\\test.txt",false,all );
#7
麻烦各位神人看清需求啊。。
#8
真的可以嘛,牛人,可以留下你的企鹅嘛?
#9
xml文档如下
<?xml version="1.0" encoding="utf-8"?>
<TableModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<EngName>英文表名</EngName>
<ChnName>中文表名</ChnName>
<Columns>
<ColumnModel>
<LeftName>人员基本信息</LeftName>
<RightName>人员基本信息</RightName>
</ColumnModel>
<ColumnModel>
<LeftName>身份证号</LeftName>
<RightName>身份证号号</RightName>
</ColumnModel>
....
</Columns>
</TableModel>
xml就类似这样写。
c#的类
public class TableModel
{
private string _engName; //表的英文名
private string _chnName; //表的中文名
private List<ColumnModel> _columns = new List<ColumnModel>(); //字段结构
}
public class ColumnModel
{
private string leftName; //表中字段名
private string rightName;
}
这些都要封装,我这里省略了。
还要写读写的函数。
public class MyXmlSerializer<T>
{
#region 读函数
/// <summary>
/// 从文件filename中获取类型为T的配置信息。
/// </summary>
/// <param name="fileName">文件的地址</param>
/// <returns></returns>
public static T Read(string fileName)
{
if (!File.Exists(fileName))
{
throw new ArgumentException("请输入有效的配置文件路径:" + fileName);
}
T up;
//try
//{
XmlSerializer myxml = new XmlSerializer(typeof (T));
using (StreamReader reader = new StreamReader(fileName, Encoding.UTF8))
{
up = (T)myxml.Deserialize(reader);
reader.Close();
}
// }
//catch (XmlException e)
//{
// throw new XmlException("文件" + fileName + ":" + e.Message);
//}
return up;
}
#endregion
#region 写函数
/// <summary>
/// 将类型为T的配置信息,保持在文件fileName中
/// </summary>
/// <param name="config">配置信息</param>
/// <param name="fileName">文件地址</param>
public static void Write(T config, string fileName)
{
try
{
XmlSerializer myxml = new XmlSerializer(typeof(T));
using (StreamWriter writer = new StreamWriter(fileName, false, Encoding.UTF8))
{
myxml.Serialize(writer, config);
writer.Close();
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
使用的时候
private TableModel abc = new TableModel();
abc = MyXmlSerializer<TableModel>.Read(xml文件的路径);
写了这么多,希望对你有用。
<?xml version="1.0" encoding="utf-8"?>
<TableModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<EngName>英文表名</EngName>
<ChnName>中文表名</ChnName>
<Columns>
<ColumnModel>
<LeftName>人员基本信息</LeftName>
<RightName>人员基本信息</RightName>
</ColumnModel>
<ColumnModel>
<LeftName>身份证号</LeftName>
<RightName>身份证号号</RightName>
</ColumnModel>
....
</Columns>
</TableModel>
xml就类似这样写。
c#的类
public class TableModel
{
private string _engName; //表的英文名
private string _chnName; //表的中文名
private List<ColumnModel> _columns = new List<ColumnModel>(); //字段结构
}
public class ColumnModel
{
private string leftName; //表中字段名
private string rightName;
}
这些都要封装,我这里省略了。
还要写读写的函数。
public class MyXmlSerializer<T>
{
#region 读函数
/// <summary>
/// 从文件filename中获取类型为T的配置信息。
/// </summary>
/// <param name="fileName">文件的地址</param>
/// <returns></returns>
public static T Read(string fileName)
{
if (!File.Exists(fileName))
{
throw new ArgumentException("请输入有效的配置文件路径:" + fileName);
}
T up;
//try
//{
XmlSerializer myxml = new XmlSerializer(typeof (T));
using (StreamReader reader = new StreamReader(fileName, Encoding.UTF8))
{
up = (T)myxml.Deserialize(reader);
reader.Close();
}
// }
//catch (XmlException e)
//{
// throw new XmlException("文件" + fileName + ":" + e.Message);
//}
return up;
}
#endregion
#region 写函数
/// <summary>
/// 将类型为T的配置信息,保持在文件fileName中
/// </summary>
/// <param name="config">配置信息</param>
/// <param name="fileName">文件地址</param>
public static void Write(T config, string fileName)
{
try
{
XmlSerializer myxml = new XmlSerializer(typeof(T));
using (StreamWriter writer = new StreamWriter(fileName, false, Encoding.UTF8))
{
myxml.Serialize(writer, config);
writer.Close();
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
使用的时候
private TableModel abc = new TableModel();
abc = MyXmlSerializer<TableModel>.Read(xml文件的路径);
写了这么多,希望对你有用。
#10
用xml写 到时候表中字段修改了,改起来很方便,受益很多的。