我对编程很陌生,但是对于C#的大多数方面,我已经找到了解决方法。但我在网上找不到这个,我今天更加精力充沛。当我被告知我无法使用数据库从中获取电子邮件地址时,我刚刚完成了我的程序的整个电子邮件部分,我不得不使用Excel文档
我需要阅读xlsm并将用户名与电子邮件进行比较以获取当前用户的电子邮件地址。我已经有了用户名,但是没有找到很多在线帮助xlsm。以下是我尝试过的一些例子:
这个是理想的,因为我喜欢我的代码简短而甜蜜。但是当我尝试运行它时,我得到'根级别的数据无效。第1行,第1行。'我猜这与使用XDocument有关。多数民众赞成我如何解析XML文件,所以我可能在这里有错误的类,但是在xlsm上再找不到,所以我不知道该使用什么
string[] arr = XDocument.Load(@"C:\example.xlsm").Descendants("Login name" + "Email").Select(element => element.Value).ToArray();
即使在下载OpenXMLSDKV25之后,它也不会找到'DocumentFormat'并且文件名已经被使用[const string fileName],但如果我将其更改为fileName2,那么它表示并非所有代码路径都返回一个值。
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using Excel = Microsoft.Office.Interop.Excel;
public static string GetCellValue(string fileName, string sheetName, string addressName)
{
const string fileName = @"C:\example.xlsm";
// Retrieve the value in cell A1.
string value = GetCellValue(fileName, "Sheet1", "C2");
Console.WriteLine(value);
// Retrieve the date value in cell A2.
value = GetCellValue(fileName, "Sheet1", "F2");
Console.WriteLine(DateTime.FromOADate(double.Parse(value)).ToShortDateString());
}
这个不喜欢工作簿[“Sheet1”] - 无法将带有[]的索引应用于“Microsoft.Office.Interop.Excel.Workbook”类型的表达式
using Excel = Microsoft.Office.Interop.Excel;
//Excel.Application excel = new Excel.Application();
//Excel.Workbook workbook = excel.Workbooks.Open("example.xlsm");
//Excel.Worksheet worksheet = workbook["Sheet1"] as Excel.Worksheet;
//string someData = (worksheet.Range["C2"] as Excel.Range).Value.ToString();
//worksheet = null;
//workbook.Close();
//excel.Quit();
任何帮助都会被批准!
答案 0 :(得分:0)
我更正了您的代码(您必须通过Sheets集合访问工作表:
using Excel = Microsoft.Office.Interop.Excel;
//Excel.Application excel = new Excel.Application();
//Excel.Workbook workbook = excel.Workbooks.Open("example.xlsm");
//Excel.Worksheet worksheet = workbook.Sheets["Sheet1"] as Excel.Worksheet;
//string someData = (worksheet.Range["C2"] as Excel.Range).Value.ToString();
//worksheet = null;
//workbook.Close();
//excel.Quit();