我的.xls文件包含5列(ID,名称,地址,电话,移动设备)和各自的值。我必须以编程方式创建一个xml文件,并在xml文件中仅编写5个列中的3个值(id,name,mobile)。
我正在使用下面的代码从web获取数据并首先将其写入xls文件,该文件正常工作。但是,从xls获取数据以及创建和写入xml失踪..
FtpWebResponse response = (FtpWebResponse)req.GetResponse();
Stream stream = response.GetResponseStream();
byte[] buffer = new byte[2048];
FileStream fs = new FileStream(DownloadedxlsFilePath, FileMode.Create);
int ReadCount = stream.Read(buffer, 0, buffer.Length);
while (ReadCount > 0)
{
fs.Write(buffer, 0, ReadCount);
ReadCount = stream.Read(buffer, 0, buffer.Length);
}
ResponseDescription = response.StatusDescription;
fs.Close();
stream.Close();
所以有两种方法: 1.获取整个数据并选择所需数据,然后创建并写入xml 2.使用上面的代码轻松地将数据写入.xls文件,然后使用C#逻辑获取所需数据,然后写入xml。
任何人都可以在c#。
中对上述任何一种方法提供帮助答案 0 :(得分:0)
这可能有所帮助,但需要您进行一些修改。我使用下面的代码从Excel文件中检索数据,将其写入数据表,然后迭代数据表中的每一行并将其写入数据库表。
namespace CopyExcel
{
class Program
{
static void Main(string[] args)
{
var fileName = string.Format("{0}\\MaintList.xlsx", "C:\\Import");
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var db = new ModulesDataContext();
var adapter = new OleDbDataAdapter("SELECT * FROM [WCR$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "ExcelData");
DataTable ExcelData = ds.Tables["ExcelData"]; // datatable to store retrieved Excel data
var counter = 0;
foreach (DataRow row in ExcelData.Rows)
{
Module mod = new Module(); // this is the class built over my Module table
mod.SystemID = Convert.ToInt32(ExcelData.Rows[counter]["SysID"]);
mod.Module1 = ExcelData.Rows[counter]["Num"].ToString();
mod.Title = ExcelData.Rows[counter]["Title"].ToString();
mod.Type = "CAI";
// Save data to Module database table
db.Modules.InsertOnSubmit(mod);
db.SubmitChanges();
counter++;
}
}
}
}
您可以修改,以便输出到XML:
,而不是写入数据表var xElement = new XElement("systemid", Convert.ToInt32(ExcelData.Rows[counter]["SysID"]);
xElement.Add(new XElement("module", ExcelData.Rows[counter]["Num"].ToString());
xElement.Add(new XElement("title", ExcelData.Rows[counter]["Title"].ToString());
etc...
当然,您要处理自己的列,例如id
,name
和mobile
。