文件内容绑定到水晶报表文件并显示的问题

zhxingway 2009-07-15 04:37:45
您好,感谢你阅读此帖。

我的一个文本文件里面的部分内容如下:
2,6-DAN000,3
3,6-DAN000,14
4,6-DAN000,25
.
.
.
17,6-DAN000,99
18,6-DAN000,105
19,6-DAN000,111
20,6-DAN000,123
2,7-DAN010,3
3,7-DAN010,14
4,7-DAN010,25
.
.
.
8,7-DAN010,75
9,7-DAN010,147 这些数据如果以表格的形式来显示,比如2,6-DAN000,3的意思是第二列第六行的数据是DAN000,3。

现在我想把这个文本文件里面的内容全部读取出来并绑定到水晶报表中再以WebForm的形式显示出来,请问有什么方法来实现呢?


我看到现在大部分的水晶报表的内容都是先存放在数据库里面的,但是我的内容是预先存放在文本文件中的,这些文本文件是其它人按预定的格式写入数据的,我的任务就是把它以图表的形式显示出来。。

我的思路是先把这些内容读出来后放到内存中再绑定到水晶报表文件,但是我不知道怎么把它读出来,请高手指点。

祝大家生活愉快。
...全文
37 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tayirvb 2012-10-07
  • 打赏
  • 举报
回复
winform 里怎么写?
IHandler 2009-07-16
  • 打赏
  • 举报
回复
今早来调试OK了

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Row"));
dt.Columns.Add(new DataColumn("Col"));
dt.Columns.Add(new DataColumn("Value"));
StreamReader reader = new StreamReader("txt.txt");
//行数
int maxRow = 0;
//列数
int maxCol = 0;
string line = null;
//读取txt文件
while ((line = reader.ReadLine()) != null)
{
string[] fields = line.Split(new char[] { ',' });
int col = int.Parse(fields[0]);
string[] inRow = fields[1].Split('-');
int row = int.Parse(inRow[0]);
string Value = inRow[1] + "," + fields[2];

if (col > maxCol)
{
maxCol = col;
}

if (row > maxRow)
{
maxRow = row;
}

//添加一行数据,格式:所在行、所在列、单元格值
dt.Rows.Add(new object[] { row, col, Value });
}

DataTable dtSoruce = new DataTable();
//根据maxCol值添加列
object[] obj = new object[maxCol];
for (int iCol = 0; iCol < maxCol; iCol++)
{
obj[iCol] = "";
dtSoruce.Columns.Add(new DataColumn("C" + iCol.ToString()));
}
//添加行,每行所有单元格赋空("")值
for (int i = 0; i < maxRow; i++)
{
dtSoruce.Rows.Add(obj);
}
//遍历dt表根据行值、列值给dtSource表单元格赋值
//注意使用索引时值-1
foreach (DataRow dr in dt.Rows)
{
dtSoruce.Rows[int.Parse(dr[0].ToString()) - 1][int.Parse(dr[1].ToString()) - 1] = dr[2].ToString();
}
dtSoruce.AcceptChanges();
IHandler 2009-07-15
  • 打赏
  • 举报
回复
1)按行读取txt文件中的数据
每读一行,用“,”拆分,获取记录中行的最大值和列的最大值
根据每行数据给dt增加1行,值分别为:所在行、所在列、单元格值

2)根据最大列值和最大行值给dtSource添加列和空行

3)遍历dt,给dtSource对应单元格赋值

我觉的单独做个工具把数据转换为XML格式然后在程序中直接读XML会更好些
超维电脑科技 2009-07-15
  • 打赏
  • 举报
回复
留个名
IHandler 2009-07-15
  • 打赏
  • 举报
回复
代码没调试,我的想法是这样,下班回家先了

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Row"));
dt.Columns.Add(new DataColumn("Col"));
dt.Columns.Add(new DataColumn("Value"));
StreamReader reader = new StreamReader("txt.txt");
int maxRow = 0;
int maxCol = 0;
string line = null;
while ((line = reader.ReadLine()) != null)
{
string[] fields = line.Split(new char[] { ',' });
int col = int.Parse(fields[0]);
string[] inRow = fields[1].Split('-');
int row = int.Parse(inRow[0]);
string Value = inRow[1]+","+fields[2];

if (col > maxCol)
{
maxCol = col;
}

if (row > maxRow)
{
maxRow = row;
}


dt.Rows.Add(new object[] {row,col,Value });
}

DataTable dtSoruce = new DataTable();
object[] obj = new object[maxCol];
for(int iCol=0;iCol<maxCol;iCol++)
{
obj[iCol] = null;
dtSoruce.Columns.Add(new DataColumn("C"+iCol.ToString()));
}
for (int i = 0; i < maxRow; i++)
{
dtSoruce.Rows.Add(obj);
}

foreach (DataRow dr in dt.Rows)
{
dtSoruce.Rows[int.Parse(dr[0].ToString())][int.Parse(dr[1].ToString())] =dr[2].ToString();
}

foreach (DataRow dr in dtSoruce.Rows)
{
this.textBox1.Text += dr[0].ToString();
}
wl_bdqn 2009-07-15
  • 打赏
  • 举报
回复
学习
zhxingway 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ihandler 的回复:]
改了一下,如果对数据源数据类型有要求
C# code
DataTable dt=new DataTable();
dt.Columns.Add(new DataColumn("No",typeof(int)));
dt.Columns.Add(new DataColumn("Code",typeof(string)));
dt.Columns.Add(new DataColumn("Taxis",typeof(int)));
StreamReader reader=new StreamReader("txt.txt");string line=null;while ((line= reader.ReadLine())!=null)
{string[] fields= line.Split(newchar[] {',' });
dt.Rows.Add(newobject[] {int.Parse(fields[0]), fields[1],int.Parse(fields[2]) });
}
MessageBox.Show(dt.Rows.Count.ToString());
[/Quote]

感动ing^
IHandler 2009-07-15
  • 打赏
  • 举报
回复
改了一下,如果对数据源数据类型有要求

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("No",typeof(int)));
dt.Columns.Add(new DataColumn("Code",typeof(string)));
dt.Columns.Add(new DataColumn("Taxis",typeof(int)));
StreamReader reader = new StreamReader("txt.txt");
string line = null;
while ((line = reader.ReadLine()) != null)
{
string[] fields = line.Split(new char[] { ',' });
dt.Rows.Add(new object[] { int.Parse(fields[0]), fields[1], int.Parse(fields[2]) });
}
MessageBox.Show(dt.Rows.Count.ToString());
zhxingway 2009-07-15
  • 打赏
  • 举报
回复
非常感谢 IHandler 的代码,它让我看到了解决问题的希望。

现在我想再继续深入一些,就是刚才我提到的 2,6-DAN000,3 表示的意思是第2列,第6行的数据是 DAN000,3。。

所以这些数据:
4,6-DAN000,25
17,6-DAN000,99
18,6-DAN000,105
19,6-DAN000,111
20,6-DAN000,123
都是同在第6行的哦,其它也类似,


我终于明白了,看来把这些数据组成一个DataTable才是难点啊,我再仔细研究研究,

还是最希望大家推荐一下这方面的示例代码,呵呵。谢谢谢谢
jasondct 2009-07-15
  • 打赏
  • 举报
回复
5楼的方法 虽然是用手工但是 完成你的需求。
是把 你的txt 用xml读到dataset里。 然后显示到水晶报表, 然后用水晶报表的公式和分组显示出来(报表专家的。)
wenblue7 2009-07-15
  • 打赏
  • 举报
回复
顶起
IHandler 2009-07-15
  • 打赏
  • 举报
回复
txt.txt内容如下
2,6-DAN000,3
3,6-DAN000,14
4,6-DAN000,25
17,6-DAN000,99
18,6-DAN000,105
19,6-DAN000,111
20,6-DAN000,123
2,7-DAN010,3
3,7-DAN010,14
4,7-DAN010,25
8,7-DAN010,75
9,7-DAN010,147
IHandler 2009-07-15
  • 打赏
  • 举报
回复

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("No"));
dt.Columns.Add(new DataColumn("Code"));
dt.Columns.Add(new DataColumn("Taxis"));
StreamReader reader = new StreamReader("txt.txt");
while (reader.Read()!=-1)
{
string[] fields = reader.ReadLine().Split(',');
dt.Rows.Add(new object[] { fields[0], fields[1], fields[2] });
}
MessageBox.Show(dt.Rows.Count.ToString());
zhxingway 2009-07-15
  • 打赏
  • 举报
回复
感谢楼上的回答,原来可以把纯文本的内容读出来组成一个DataSet啊,

各位有没有这方面的示例代码呢,怀着非常强烈的渴望和激动的心情希望获得这方面的示例项目

不胜感激
IHandler 2009-07-15
  • 打赏
  • 举报
回复
1 存储为XML个格式,使用DataSet.ReadXml(strng path);这样写你的XML文件
<?xml version="1.0" encoding="utf-8" ?>
<Data>
<Row>
<Number>2</Number>
<Code>6-DAN000</Code>
<Taxis>3</Taxis>
</Row>
<Row>
<Number>3</Number>
<Code>6-DAN000</Code>
<Taxis>4</Taxis>
</Row>
</Data>
数据读取出来会存储在DataSet的第一张表中

2 如果是纯文本,可以一行行的读取,,每读取一行给DataTable实例新增一行,可以使用StreamReader读
zhxingway 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 missingwen 的回复:]
xml
[/Quote]

是一个TXT文件哦,不是XML格式的文件,那些文件不是我控制的,是其它人生成的,我也没有办法改变它的格式
MissingWen 2009-07-15
  • 打赏
  • 举报
回复
xml

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧