首页 新闻 会员 周边

在ASP.NET中导入excel直接转化成xml

0
悬赏园豆:20 [已解决问题] 解决于 2012-11-15 11:22

在ASP.NET中 将excel报表导入后直接转化成xml格式,求代码~~~

问题补充:

报表的样式是这样的~

我用的是vs2010 和 excel2007

一丝痕迹的主页 一丝痕迹 | 初学一级 | 园豆:158
提问于:2012-11-14 12:03
< >
分享
最佳答案
1
            //这个控件应该在aspx文件中定义.
            FileUpload fu1 = new FileUpload();
            string path = @"d:\a.xls";
            fu1.PostedFile.SaveAs(path);
            string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path +
            ";Extended Properties='Excel 8.0;HDR=yes;IMEX=1;'";
            string selectCommand = " SELECT * FROM [Sheet1$] ";
            DataTable dt = new DataTable();
            using (var conn = new System.Data.OleDb.OleDbConnection(connString))
            {
                var adt = new System.Data.OleDb.OleDbDataAdapter(selectCommand, conn);
                adt.Fill(dt);
            }

            var root = new XElement("ImportFromExcel");
            var lstHeader=new List<string>();
            foreach (DataColumn dc in dt.Columns)
                lstHeader.Add(dc.ColumnName);
            var data = new XElement("Data");
            XElement row;
            foreach(DataRow dr in dt.Rows)
            {
                row = new XElement("add");
                for (int i = 0; i < lstHeader.Count; i++)
                    row.Add(new XAttribute(lstHeader[i], dr[i].ToString()));
                data.Add(row);
            }
            root.Add(data);
            root.Save(@"d:\a.xml");
收获园豆:20
夏狼哉 | 小虾三级 |园豆:833 | 2012-11-14 12:37

这个是报表的样式~

一丝痕迹 | 园豆:158 (初学一级) | 2012-11-14 13:58

以上图片是用你的方法生成后的,我想要生成下面这张图的这种样子的xml格式~!你有什么办法不?

一丝痕迹 | 园豆:158 (初学一级) | 2012-11-14 14:17

@一丝痕迹: 

老兄,你是在跟我开玩笑吗? 你确定你知道什么叫XML?

 

你到底是要做格式, 还是保存数据? 如果是存数据, 那格式相关的信息都扔掉不要就行了. 你要仅仅是为了格式, 你直接在excel中另存为网页就行了.

夏狼哉 | 园豆:833 (小虾三级) | 2012-11-14 14:22

@夏狼哉: 额~我没跟你看玩笑~~

可能我没表达清楚,要求在导入excel后把报表转换成xml的格式,然后在页面上显示

怎么显示的我知道,就是不知道怎么用代码把excel转换成xml格式~!!

求老兄指点!!

一丝痕迹 | 园豆:158 (初学一级) | 2012-11-14 14:47

@一丝痕迹: 

首先, 我前面说的把excel另存为网页, 你试过了吗? 你确定那不符合你的要求?

然后再说XML. XML是用于保存数据的, (你要把它理解成就像sql server的一张表), 它不是像html中做table的那个概念, tr可以代表行, td代表cell等等, XML中的元素没有任何格式的含义, 只有数据.

也就是说, 你要做XML, 应该只保存你图片中所说的"中间是具体内容" 那部分, 那才是数据.

至于你的excel中的表头和表尾, 如果你非想转, 当然不是不可以(anyway, 任何东西都可以说成是一种数据...), 但是程序就不具有任何的可移植性了, 你必须为你的这个格式定做程序, 也就是说, 如果另一个excel的格式稍有不同, 程序就会出错. 这种程序实在没什么意义.

如果你就想这么做, 那也很简单, 你把dt中特定的行和列的值读出来(表头部分), 作为xelement放到根结点下面就行了, 就跟你的截图中的table那样, 一格一格地手动写代码来生成. 数据部分差不多还是我写的那些代码就行. 只是把列名行换一换(我的程序中把第一行理解成列名, 你可以根据格式来选择哪一行是列名).

夏狼哉 | 园豆:833 (小虾三级) | 2012-11-14 15:12

@夏狼哉: 谢谢

一丝痕迹 | 园豆:158 (初学一级) | 2012-11-14 15:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册