Надо исправить WorkBook.Open()
. 3 параметер ReadOnly
Microsoft.Office.Interop.Excel.Workbook ObjWorkBook = ObjExcel.Workbooks.Open(NameExcel, 0, true, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
Workbook Open(
string Filename,
Object UpdateLinks,
Object ReadOnly,
Object Format,
Object Password,
Object WriteResPassword,
Object IgnoreReadOnlyRecommended,
Object Origin,
Object Delimiter,
Object Editable,
Object Notify,
Object Converter,
Object AddToMru,
Object Local,
Object CorruptLoad)
WorkBook.Open()
- Remove From My Forums
-
Question
-
Hi,
I want to write a program to access cells in an excel file?
How can I do that?
Thanks
Answers
-
Try this code!
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook wb = app.Workbooks.Open("your excel file path", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Worksheet sheet = (Worksheet)wb.Sheets["Sheet name to read"]; Range excelRange = sheet.UsedRange; foreach (Microsoft.Office.Interop.Excel.Range row in excelRange.Rows) { int rowNumber = row.Row; string[] A4D4 = GetRange("A" + rowNumber + ":F" + rowNumber + "", sheet); } public string[] GetRange(string range, Worksheet excelWorksheet) { Microsoft.Office.Interop.Excel.Range workingRangeCells = excelWorksheet.get_Range(range, Type.Missing); //workingRangeCells.Select(); System.Array array = (System.Array)workingRangeCells.Cells.Value2; string[] arrayS = this.ConvertToStringArray(array); return arrayS; }
-
Edited by
Monday, September 5, 2011 6:40 AM
-
Marked as answer by
Martin_Xie
Monday, September 19, 2011 11:49 AM
-
Edited by
-
Hi DarkSeeker,
Try this:
static void Main(string[] args) { IWorkbook workbook = Factory.GetWorkbook(@"C:tmpMyWorkbook.xls"); IWorksheet worksheet = workbook.Worksheets[0]; IRange a1 = worksheet.Cells["A1"]; object rawValue = a1.Value; string formattedText = a1.Text; Console.WriteLine("rawValue={0} formattedText={1}", rawValue, formattedText); }
Regards, http://shwetamannjain.blogspot.com
-
Marked as answer by
Martin_Xie
Monday, September 19, 2011 11:50 AM
-
Marked as answer by
-
“I
want to write a program to access cells in an excel file?”Thanks all for your great help and suggestions.
Hi DarkSeeker,
Welcome to MSDN Forum.
Usually, there are 2 approaches to access Office Excel files in .Net.
1.
COM Interop approach as the above said.FAQ: How do I use Excel Automation in .NET
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/df02c6d2-e1b5-4731-bb04-2674aed789de
Add Reference to COM component “Microsoft Excel Object Library” into your project.
Code sample: Get/Set cell value in Excel Spreadsheet.
using Microsoft.Office.Interop.Excel;
object oExcel
= new Excel.Application;object oBook
= oExcel.Workbooks.Open(«C:\Book1.xls»);
object oSheet =
oBook.Worksheets(1);
// e.g. Read value in A2 cell
string cellValue
= oSheet.Range(«A2»).Value;
// e.g. Change value in A2 cell
oSheet.Range(«A2»).Value
= «»;
oBook.SaveAs(«C:\Book1.xls»,
true);
oExcel.Quit();2. OleDb Data Provider approach
Retrieve Excel Sheet data and bind into DataGridView control, and then access particular cells via DataGridView.
using System.Data;
using System.Data.OleDb;
OleDbConnection conn = new
OleDb.OleDbConnection((«provider=Microsoft.Jet.OLEDB.4.0; »
+ («data source=C:\myData.xls; »
+ «Extended Properties=Excel 8.0;»)));
// Select the data from Sheet1 of the workbook.
OleDbDataAdapter ada = new
OleDbDataAdapter(«select * from Sheet1$]», conn);
DataSet ds = new
DataSet();
ada.Fill(ds);
dataGridView1.DataSource
= ds.Tables[0].DefaultView;
conn.Close();// Access particular cells on DataGridView.
DataGridView1(RowIndex, ColumnIndex)
DataGridView1.Rows(RowIndex).Cells(ColumnIndex)
Martin Xie [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.-
Proposed as answer by
Carmelo La Monica
Tuesday, September 6, 2011 5:54 AM -
Marked as answer by
Martin_Xie
Monday, September 19, 2011 11:48 AM
-
Proposed as answer by
Table of Contents
- Background
- Prerequisites
- Source Code
Background
A few days ago we got a requirement to read Excel files and store those values in the SQL server database. So in this example, we’re going to show how to get the basic four import data such as Excel Work Book
Name, Worksheet Count in that Workbook, Name of the First Worksheet, and finally the value of the first cell in that worksheet.
Prerequisites
Kindly ensure you add the following DLL as shown in the below screenshot,
Namespace
using Excel = Microsoft.Office.Interop.Excel;
Source Code
C# Code
- protected void BtnGetExcelFileDetails_Click(object sender, EventArgs e)
- {
- try
- {
- Excel.Application oExcel = new Excel.Application();
- string filepath = @ «D:TPMSUploaded_BoqRaveena_boq_From_Db.xlsx»;
- Excel.Workbook WB = oExcel.Workbooks.Open(filepath);
- string ExcelWorkbookname = WB.Name;
- int worksheetcount = WB.Worksheets.Count;
- Excel.Worksheet wks = (Excel.Worksheet) WB.Worksheets[1];
- string firstworksheetname = wks.Name;
- var firstcellvalue = ((Excel.Range) wks.Cells[1, 1]).Value;
- } catch (Exception ex)
- {
- string error = ex.Message;
- }
- }
Hope the above information was useful.
- Новые
- Лучшие
- Все
Чтение данных из таблиц Excel
Язык программирования C#
Многие материалы которые я здесь описываю, я размещаю для самого себя, в основном чтобы мучительно долго не вспоминать как же оно делается и вновь пытать поисковики запросами.
На сей раз опишу простой пример доступа и выборки данных из таблиц Excel в C#. На днях пришлось сим заниматься и в очередной раз вспоминать как оно делается попроще, для больших задач с кучей разных наворотов информации в интернете много. А надо то оно, как обычно бывает, совсем простенько чтоб решало поставленную задачу.
Итак приступим:
Первым делом добавляем в наш проект (Add References…)
Microsoft.Office.Interop.Excel
Далее добавляем на форму:
TextBox — в него будем вводить номер столбца.
RichTextBox — в него выведем прочитанные из эксельки данные.
Button — по этой кнопочки всё выполняется.
OpenFileDialog — для выбора файла xls.
Далее в обработчике события нажатия кнопки пишем такой код:
//Открываем файл Экселя
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//Создаём приложение.
Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application();
//Открываем книгу.
Microsoft.Office.Interop.Excel.Workbook ObjWorkBook = ObjExcel.Workbooks.Open(openFileDialog1.FileName, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
//Выбираем таблицу(лист).
Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1];
//Очищаем от старого текста окно вывода.
richTextBox1.Clear();
for (int i = 1; i < 101; i++)
{
//Выбираем область таблицы. (в нашем случае просто ячейку)
Microsoft.Office.Interop.Excel.Range range = ObjWorkSheet.get_Range(textBox1.Text + i.ToString(), textBox1.Text + i.ToString());
//Добавляем полученный из ячейки текст.
richTextBox1.Text = richTextBox1.Text + range.Text.ToString()+"n";
//это чтобы форма прорисовывалась (не подвисала)...
Application.DoEvents();
}
//Удаляем приложение (выходим из экселя) - ато будет висеть в процессах!
ObjExcel.Quit();
}
Вот собственно и всё, должно работать.
Исходник можно скачать здесь: ExcelExamle.rar
P.S.
Вот здесь пример того как делать обратное (выводить данные в Excel):
http://babakov.net/blog/lang_c_sharp/39.html
C шарп
Excel
Этот пример создан для чтения файла excel в консольным приложением C#.
Используя пространство имен Excel в C#, мы можем загрузить или открыть файл Excel и прочитать листы ячеек.
Шаг 1: Мы должны ссылаться на пространство имен Excel для проекта. Для этого добавим ссылку на Com объект.
Шаг 2: Добавим пространство имен;
using Microsoft.Office.Interop.Excel; |
Шаг 3: создание ссылок на COM-объекты и проверка наличия программы Excel
//Create COM Objects. Application excelApp = new Application(); if (excelApp == null) { Console.WriteLine(«Excel is not installed!!»); return; } |
Шаг 4: создание книги, страниц и переменных диапазона
Workbook excelBook = excelApp.Workbooks.Open(@»E:readExample.xlsx»); _Worksheet excelSheet = excelBook.Sheets[1]; Range excelRange = excelSheet.UsedRange; |
Шаг 5: вычисление строк и колонок.
int rowCount = excelRange.Rows.Count; int colCount = excelRange.Columns.Count; |
Шаг 7: завершаем работу приложения
//after reading, relaase the excel project excelApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp); Console.ReadLine(); |
Исходный код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Office.Interop.Excel; namespace Пример_приложения_чтение_данных_из_Excel_Console { //dont forget — using Microsoft.Office.Interop.Excel; class Program { static void Main(string[] args) { //Create COM Objects. Application excelApp = new Application(); if (excelApp == null) { Console.WriteLine(«Excel is not installed!!»); return; } Workbook excelBook = excelApp.Workbooks.Open(@»D:readExample.xlsx»); _Worksheet excelSheet = excelBook.Sheets[1]; Range excelRange = excelSheet.UsedRange; int rows = excelRange.Rows.Count; int cols = excelRange.Columns.Count; for (int i = 1; i <= rows; i++) { //create new line Console.Write(«rn»); for (int j = 1; j <= cols; j++) { //write the console if (excelRange.Cells[i, j] != null && excelRange.Cells[i, j].Value2 != null) Console.Write(excelRange.Cells[i, j].Value2.ToString() + «t»); } } //after reading, relaase the excel project excelApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp); Console.ReadLine(); } } } |