Как насчет импорта excel 2013-2016 в C# ?
Как насчет импорта excel 2013-2016 ?
Что я уже пробовал:
Как насчет импорта excel 2013-2016 ?
Maciej Los
Как насчет пункта назначения импорта?
Как насчет пункта назначения импорта?
Как насчет того, чтобы провести собственное исследование?
Видеть Работа с MS Excel(xls / xlsx) Использование MDAC и Oledb[^].
5ед!
У вас есть два варианта, используйте Microsoft Office Interop
private void OpenExcelFile(string filePath) { Excel.Application xlApp ; Excel.Workbook xlWorkBook ; Excel.Worksheet xlWorkSheet ; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Open(filePath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); MessageBox.Show(xlWorkSheet.get_Range("A1","A1").Value2.ToString()); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); } private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; MessageBox.Show("Unable to release the Object " + ex.ToString()); } finally { GC.Collect(); } }
Приведенный ниже код работает только в том случае, если на вашем компьютере установлен MS office или вам необходимо установить инструмент AccessDatabaseEngine_x64 drivers tool. Установочный файл AccessDatabaseEngine_x64 легко доступен и бесплатен.
Попробуйте приведенный ниже код я думаю что это полезно для вас
код aspx
&ЛТ;форме ID="форма form1" атрибут runat="сервер"и GT;
< div>
< div style= "float:left; width: 100%; text-align:right">
&ЛТ;АСП:кнопка ID="BtnDownload" атрибут runat="сервер" текст="скачать" функция onclick="BtnDownload_Click" /&ГТ; &ЛТ;/дел&ГТ;
< div style= " float: left; width:100%">
&ЛТ;как ASP:fileupload с ИД="FileUpload1" атрибут runat="сервер" /&ГТ; &ампер;усилитель; nbsp;&ампер;усилитель; nbsp;
&ЛТ;АСП:кнопка ID="BtnUpload" атрибут runat="сервер" текст="загрузка" функция onclick="BtnUpload_Click" /&ГТ;
&ЛТ;п&ГТ;&ампер;усилитель; nbsp;&ЛТ;/п&ГТ;&ЛТ;п&ГТ;&ампер;усилитель; nbsp;&ЛТ;/п&ГТ;&ЛТ;п&ГТ;&ампер;усилитель; nbsp;&ЛТ;/п&ГТ;
Образец Скачать файл <а href="SampleFile.xlsx"и GT;Нажмите здесь&ЛТ;/а&ГТ;
&ЛТ;п&ГТ;&ампер;усилитель; nbsp;&ЛТ;/п&ГТ;
< / div>
< div style= " float: left; width:100%">
&ЛТ;АСП:метка идентификатор="lblStatus" атрибут runat="сервер" текст="" цвет="зеленый"&ГТ;&ЛТ;/АСП:ярлык&ГТ;
&ЛТ;АСП:метка идентификатор="lblErrorMsg" атрибут runat="сервер" текст="" Цвет="Красный"&ГТ;&ЛТ;/АСП:ярлык&ГТ;
< / div>
< / div>
< / форма>
код файла. cs
охраняемых недействительными BtnUpload_Click(объект отправителя, EventArgs в электронной)
{
если (FileUpload1.HasFile)
{
пробовать
{
lblStatus.Текст = "";
lblErrorMsg.Текст = "";
строка файла = путь.GetFileName(FileUpload1.Именем);
FileUpload1.Сохранить Как(Сервер.MapPath ("~/MyFolder/") + имя файла);
lblStatus.Text = "Файл Обновлен:" + DateTime. Now;
BtnUpload.Enabled = false;
ReadExcelToTable(имя файла);
}
поймать (исключение бывший)
{
lblErrorMsg.Text = "файл не может быть загружен". + ex. Message;
lblStatus.Текст = "";
BtnUpload.Включен = истина;
}
}
ещё
{
lblErrorMsg.Text = " Пожалуйста, выберите файл.";
lblStatus.Текст = "";
BtnUpload.Включен = истина;
}
}
private void ReadExcelToTable(string strFileName)
{
строка connstring;
string strPath = сервер.MapPath ("~/MyFolder/");//System.Конфигурация.Конфигурационный менеджер.Параметр appsettings.Вам("Путь_к_файлу").Метод toString();
if (! strFileName.Содержит (". xlsx"))
{
connstring = " Provider=Microsoft. JET.OLEDB.4.0;data Source=" + strPath + strFileName + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';"; //эта строка подключения подходит для Office 2007 и более старой версии. Мы можем выбрать наиболее подходящую строку подключения в соответствии с версией Office или нашей программой.
}
ещё
{
//connstring = " Provider=Microsoft. ACE.OLEDB.12.0;data Source=" + strPath + strFileName + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; // дополнительное пустое пространство не может появиться в Office 2007 и последней версии. И нам нужно обратить внимание на точку с запятой.
connstring = "поставщика=Майкрософт.Туз.Oledb для.12.0;Источник данных=" + strPath + strFileName + ";дополнительные свойства='значение Excel 12.0;HDR съемка=да;компания IMEX=1'";
}
using (OleDbConnection conn = new OleDbConnection(connstring))
{
Коннектикут.Открыть();
DataTable sheetsName = conn.GetOleDbSchemaTable (OleDbSchemaGuid.Таблицы, новый объект[] { null, null, null, "таблица"}); / / получить имя всех листов
строка firstSheetName = sheetsName.Select ("TABLE_NAME=' Sheet1$'")[0][2].ToString (); / / получить имя первого листа
string strQuery = строка.Формат ("SELECT * FROM [{0}]", firstSheetName); // "Measurement Sheet" / / строка запроса
Набор данных = новый набор данных();
OleDbDataAdapter oDtAdaptor = новый OleDbDataAdapter(strQuery, conn);
одтадаптор.Заливка (набор);
Коннектикут.Закрывать();
пробовать
{
int prodCount = 0;
То StringBuilder команда sqlcommand = новое окно инструментов();
string ErrorID = "";
foreach (DataRow Dr in set.Таблицы[0]. Строки)
{
если (! DBNull.Ценность.Equals (Dr ["Column1"]) && !DBNull.Ценность.Equals (Dr ["Column2"]))
{
строка Column1 = преобразовать.ToString(Dr ["Column1"]). Trim();
строка Column2 = преобразовать.ToString(Dr ["Column2"]). Trim();
}
}
}
поймать (исключение бывший)
{
}
}
}
охраняемых недействительными BtnDownload_Click(объект отправителя, EventArgs в электронной)
{
База данных db = DatabaseFactory.Метода Createdatabase("Конструктор");
string sqlCommand = " Select column1, column2 from {tablename}";
Dbcommand в dbcommand в = дБ.GetSqlStringCommand(sqlcommand, который);
Набор ДТ = (набора данных)дБ.Методы executedataset(dbcommand в);
объектов dbcommand.Соединение.Закрывать();
string attachment = "вложение; filename=sample.xls";
Ответ.ClearContent();
Ответ.AddHeader ("content-disposition", вложение);
Ответ.ContentType = " application/vnd. ms-excel";
Ответ.Write ("column1\column2\n");
foreach (DataRow tr in dt.Таблицы[0]. Строки)
{
Ответ.Write (tr ["column1"] + "\t " + tr ["column2"]+ " \n");
}
Ответ.Конец();
}