Я пытаюсь импортировать и экспортировать Excel. Вот поток процесса. Один пользователь загружает Excel и другой пользователь, загружающий его. Excel загружается с одного веб-apllication, а затем загружены на другие веб-приложения. (Где первенствует выбран данные и выполняются различные действия)Внешняя таблица не в ожидаемом формате asp.net
код для загрузки EXCEL
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.ClearContent()
HttpContext.Current.Response.ClearHeaders()
HttpContext.Current.Response.Buffer = True
HttpContext.Current.Response.ContentType = "application/ms-excel"
HttpContext.Current.Response.Write("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">")
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=Reports.xls")
HttpContext.Current.Response.Charset = "utf-8"
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250")
'sets font
HttpContext.Current.Response.Write("<font style='font-size:10.0pt; font-family:Calibri;'>")
HttpContext.Current.Response.Write("<BR><BR><BR>")
'sets the table border, cell spacing, border color, font of the text, background, foreground, font height
HttpContext.Current.Response.Write("<Table border='1' bgColor='#ffffff' " + "borderColor='#000000' cellSpacing='0' cellPadding='0' " + "style='font-size:10.0pt; font-family:Calibri; background:white;'>")
'am getting my grid's column headers
Dim columnscount As Integer = GridView_Result.Columns.Count
Dim Console As String = ""
HttpContext.Current.Response.Write("<TR>")
For Each column In dtEmp.Columns
HttpContext.Current.Response.Write("<Td>")
HttpContext.Current.Response.Write(column.ColumnName)
HttpContext.Current.Response.Write("</Td>")
Next
HttpContext.Current.Response.Write("</TR>")
For Each row As DataRow In dtEmp.Rows
'write in new row
HttpContext.Current.Response.Write("<TR style=background-color :#FFFFFF>")
For i As Integer = 0 To dtEmp.Columns.Count - 1
HttpContext.Current.Response.Write("<Td>")
HttpContext.Current.Response.Write(row(i).ToString())
HttpContext.Current.Response.Write("</Td>")
Next
HttpContext.Current.Response.Write("</TR>")
Next
HttpContext.Current.Response.Write("</Table>")
HttpContext.Current.Response.Write("</font>")
HttpContext.Current.Response.Flush()
HttpContext.Current.Response.[End]()
Response.ClearContent()
Теперь я могу скачать Excel но когда я загрузил его и попытался его прочитать, ему дали «Внешняя таблица не в ожидаемом формате», но когда я вручную создаю любое excel и пытаюсь загрузить и прочитать, что Excel, то он работает идеально, а не выдача какой-либо ошибки
Кода для чтения EXCEL
var FilePATH = Server.MapPath("~/Reports/" + "DEMO.xls");
if (FileUpload1.HasFile)
{
string con = "provider=Microsoft.ACE.OLEDB.12.0;;Data Source={0};" +
"Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";
FileUpload1.SaveAs(FilePATH);
con = String.Format(con, FilePATH);
OleDbConnection connExcel = new OleDbConnection(con);
OleDbCommand cmdExcel = new OleDbCommand();
OleDbDataAdapter oda = new OleDbDataAdapter();
DataTable dt = new DataTable();
cmdExcel.Connection = connExcel;
//Get the name of First Sheet
connExcel.Open();
DataTable dtExcelSchema;
dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
connExcel.Close();
//Read Data from First Sheet
connExcel.Open();
cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
oda.SelectCommand = cmdExcel;
oda.Fill(dt);
connExcel.Close();
И это будет хорошо, если вы предоставите мне ответить без использования какого-либо сторонний DLL и производства сервера не установлен не в офисе, и он не будет установлен в будущем. Так что я не могу использовать также вмешиваться в чужие дела
, когда я открываю скачанный первенствует и сохранили его как «EXCEL 97-2003», то эта новая первенствует работает нормально