需要从CSV文件中检索数据

时间:2014-03-12 03:54:44

标签: excel

有没有办法在不打开csv文件的情况下将数据从csv文件检索到Excel工作表?有关csv文件的数据不断被程序编写和更新,我希望所有数据都能反映在Excel工作表中。任何帮助将不胜感激!

更新:我正在使用Windows PC。 Excel工作表和CSV文件位于一个文件夹中。我还有一个正在运行的程序,它不断更新CSV文件中的数据。如果我直接打开CSV文件,程序将停止运行。我需要一种替代解决方案来从CSV文件中读取数据而无需打开它。

2 个答案:

答案 0 :(得分:1)

我假设excel文件存在于Windows机器或服务器上。没有真正的方法,这就是为什么许多人选择使用数据库后端甚至只是访问专为多访问目的而设计的文件。

但是,如果你只需要阅读文件;可能有一些使用smb来制作它的技巧,以便在它仍然被写入时它是可读的。

此外,如果您有额外的数据库Microsoft SQL(即使是有问题的PC上的指示灯),您也可以创建ODBC文件DSN到该特定文件,并允许从多个位置访问它而不锁定它。

希望这能让你朝着正确的方向前进。有关访问应用程序和平台的更多细节将有所帮助。这一切都发生在同一台PC,多台机器上。所有的窗户?

答案 1 :(得分:0)

如果您的应用程序只是更新CSV文件中的值,那么您可以从中读取数据。

从excel文件中读取实时数据

添加标题

using Microsoft.Office.Interop.Excel;

该功能将如下所示

public void readLiveExcel()
{
Workbook xlwkbook;//To keep workbook name
Worksheet xlsheet;//To keep particular excel sheet 
Sheets excelSheets;// to keep all excel sheets
xlwkbook = (Workbook)System.Runtime.InteropServices.Marshal.BindToMoniker(sourcefile);
//Get a reference to the Workbook object by using a file moniker.
excelSheets = xlwkbook.Worksheets;
Worksheet xlsheet=null;//To keep particular excel sheet 
Range excelRange = null;
xlsheet = (Worksheet)excelSheets[sheetName];
//sheetName is the name of sheet
xlsheet.Rows.ClearFormats();
excelRange = xlsheet.UsedRange;    
foreach (Range row in excelRange.Rows)
 {
    int rowNumber = row.Row;
    int columnNumber = row.Column;
    if (excelRange.Cells[rowNumber, columnNumber] != null)
    {
         string column1= (excelRange.Cells[rowNumber, columnNumber] as Range).Value2.ToString();
         string column2= (excelRange.Cells[rowNumber, columnNumber+2] as Range).Value2.ToString();
        //You will get the data here
        //Process the data here
     }
 }
}

在运行应用程序期间,Excel文件可能会打开一个弹出窗口,说明此文件已在使用中,是否要重新打开它?单击是

试试这个