Читайте в файле xls, а также текущий CSV-файл в приложении - PullRequest
1 голос
/ 22 марта 2011

У меня есть следующий код -

private void button1_Click(object sender, EventArgs e)
    {
        string csv = File.ReadAllText("FilePath");

        WebService.function res = new WebService.function();

        XDocument doc = ConvertCsvToXML(csv, new[] { "," });

Мне было интересно, как можно настроить код так, чтобы он читал не только файлы .csv, но и файлы .xls?

Я создал публичный XDocument для этого -

public  XDocument ConvertCsvToXML(string csvString, string[] separatorField)
    {
        var sep = new[] { "\n" };
        string[] rows = csvString.Split(sep, StringSplitOptions.RemoveEmptyEntries);

        var xsurvey = new XDocument(
        new XDeclaration("1.0", "UTF-8", "yes"));
        var xroot = new XElement("details"); 

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Если я правильно понимаю ваш вопрос, вы хотите проанализировать файл Excel как текст так же, как вы анализируете файл csv. Хотя это возможно, вам следует рассмотреть возможность использования интерфейсов Office Interop для этого. Если вы хотите проанализировать необработанный файл, вам необходимо учитывать различные форматы между версиями Office и целым рядом задач кодирования / сериализации; не маленькая задача.

Вот несколько ресурсов, с которых можно начать:

  1. Чтение Excel из C #
  2. Как автоматизировать Excel из C #
1 голос
/ 22 марта 2011

Я не уверен из вашего вопроса ... но если вы спрашиваете, как прочитать файл Excel в C #, это будет работать:

string fileName = [insert path and name];
string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;data source={0}; Extended Properties=Excel 8.0;", fileName);   // Create the data adapter pointing to the spreadsheet 
var oa = new OleDbDataAdapter("SELECT * FROM [xxx$]", connectionString); // xxx is tab name
// Create a blank data set 
var ds = new DataSet();    // Fill the data set using the adapter 
oa.Fill(ds, "table1");    // Create a data table from the data set 
DataTable dt1 = ds.Tables["table1"];
foreach (DataRow dr in dt1.Rows)
{
   ...
}
...