...2008下,如何编程实现从XLS文件到XML文件的转换?有其他方法吗?_百度...
发布网友
发布时间:2024-07-22 03:55
我来回答
共5个回答
热心网友
时间:2024-08-06 03:45
源码就不提供了,只给你说思路。
Excle本身就是一个数据集,你用ODBC来操作,当成数据库使用就行了。这时候取数据无非就是"Select XX FROM TABLE_A",然后你得到数据,就需要根据XML的规范和你自己的需求存放了,VC可以用轻量级的XML开源库叫TinyXML。
当然,你要是想生成的XML文件仍然能用Excle编辑,你可以看看:
http://blog.csdn.net/BeRoy/archive/2009/04/21/4098531.aspx
其实你没有说明你生成的XML打算干嘛用。。
热心网友
时间:2024-08-06 03:47
方法真多啊。。。
我也来一种。。。IO流操作,,,
fileStream file= new fileStream("路径",..mode.open)
file.read();
GetPhoneList(file);
方法
public static IList<PhoneInfo> GetPhoneList(Stream stream)
{
HSSFWorkbook newWorkBook = new HSSFWorkbook(stream);
int count = newWorkBook.GetSheetAt(0).PhysicalNumberOfRows;
HSSFSheet sheet = newWorkBook.GetSheetAt(0);
IList<PhoneInfo> list=new List<PhoneInfo>();
HSSFCell cell;
HSSFRow row;
for (int i = 1; i < count; i++)//Excel的列
{
row = sheet.GetRow(i);
PhoneAd.PhoneInfo phoneinfo = new PhoneInfo();
// newWorkBook.GetSheetAt(0).GetRow(i).GetCell(0).StringCellValue;
for (int j = 0; j < 4; j++)//固定4行
{
cell = row.GetCell(j);
//string msg = cell.StringCellValue;
switch (j)
{
case 0:
phoneinfo.FPhoneNumber = cell.StringCellValue; break;//电话号码
case 1:
phoneinfo.FDescription1 = cell.StringCellValue; break;//说明一
case 2:
phoneinfo.FDescription2 = cell.StringCellValue; break;// 说明2
case 3:
phoneinfo.FDescription3 = cell.StringCellValue; break;//说明3
default:
break;
}
}
list.Add(phoneinfo);
}
return list;
}
通过这样的方法写就行了。。我的是生成到sql2005里边。。功能都差不多。。。
热心网友
时间:2024-08-06 03:50
第一种方法 using System.Data.OleDb;
string conn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =d:\\1.xls;Extended Properties=Excel 8.0";
OleDbConnection thisconnection = new OleDbConnection(conn);
thisconnection.Open();
string Sql = "select * from [Sheet1$]";
OleDbDataAdapter mycommand = new OleDbDataAdapter(Sql, thisconnection);
DataSet ds = new DataSet();
mycommand.Fill(ds);
ds.WriteXml("d:\\2.xml");
thisconnection.Close();
第二种方法:先引用 然后选择 COM里面找到 Microsoft.Excel
然后
string excelFilePath = @"D:\1.xls";
Excel.Application myExcel = new Excel.ApplicationClass();
object oMissing = System.Reflection.Missing.Value;
myExcel.Application.Workbooks.Open(excelFilePath, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
Excel.Workbook myBook = myExcel.Workbooks[1];
Excel.Worksheet mySheet = (Excel.Worksheet)myBook.Worksheets[1];
System.Data.DataTable dt = new System.Data.DataTable("rycjsb");
dt.Columns.Add("F1", System.Type.GetType("System.String"));
dt.Columns.Add("F2", System.Type.GetType("System.String"));
dt.Columns.Add("F3", System.Type.GetType("System.String"));
dt.Columns.Add("F4", System.Type.GetType("System.String"));
dt.Columns.Add("F5", System.Type.GetType("System.String"));
dt.Columns.Add("F6", System.Type.GetType("System.String"));
dt.Columns.Add("F7", System.Type.GetType("System.String"));
DataSet myDs = new DataSet();
myDs.Tables.Add(dt);
DataRow myRow;
myDs.Clear();
for (int i = 2; i <= 4; i++)
{
myRow = myDs.Tables["rycjsb"].NewRow();
for (int j = 1; j <= 5; j++)
{
Excel.Range r = (Excel.Range)mySheet.Cells[i, j];
string strValue = r.Text.ToString();
string aa = strValue;
string columnname = "F" + j.ToString();
myRow[columnname] = strValue;
}
myDs.Tables["rycjsb"].Rows.Add(myRow);
}
myDs.WriteXml("d:\\1.xml");
热心网友
时间:2024-08-06 03:47
是导入吧,将excel文档导入到系统中,然后保存成xml吧
嗯,csdn.net的blog上好像有...忘记是谁了
热心网友
时间:2024-08-06 03:50
只有用DATASET,因为它能支持写入XML,,当然可以转个弯串行化,没有现成的组件