需要从 CSV 文件中检索数据
Posted
技术标签:
【中文标题】需要从 CSV 文件中检索数据【英文标题】:Need to retrieve data from a CSV file 【发布时间】:2014-04-16 00:11:23 【问题描述】:有什么方法可以在不打开 csv 文件的情况下将 csv 文件中的数据检索到 excel 工作表中? csv 文件上的数据不断被程序写入和更新,我希望所有数据都反映在 Excel 工作表中。任何帮助将不胜感激!
更新:我正在使用 Windows PC。 Excel 表和 CSV 文件在一个文件夹中。我还运行了一个程序,它不断更新 CSV 文件中的数据。如果我直接打开 CSV 文件,那么程序将停止运行。我需要一个替代解决方案来从 CSV 文件中读取数据而不打开它。
【问题讨论】:
要读取文件,您需要打开它...您能尝试说明您的问题是什么吗? 【参考方案1】:我假设 excel 文件存在于 Windows 机器或服务器上。没有真正的方法,这就是为什么许多人选择使用数据库后端甚至只是访问为多访问目的而设计的文件的原因。
但是,如果您只需要读取文件;可能有一些技巧使用 smb 来制作它,以便在它仍在被写入时它是可读的。
另外,如果您有额外的 db Microsoft SQL(甚至是相关 PC 上的指示灯),您可能能够创建该特定文件的 ODBC 文件 DSN 并允许从多个位置访问它而无需锁定。
希望这能让您朝着正确的方向前进。有关访问应用程序和平台的更多详细信息将有所帮助。这一切都发生在同一台PC,多台机器上吗?所有窗户?
【讨论】:
+1 将其转储到 Access 文件而不是 csv。【参考方案2】:如果您的应用程序只是更新 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 文件可能会打开一个弹出窗口,提示此文件已在使用中,您要重新打开它吗?点击是
试试这个
【讨论】:
以上是关于需要从 CSV 文件中检索数据的主要内容,如果未能解决你的问题,请参考以下文章